Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Andrei731
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 9
#1

Потоки. Бинарный ввод/вывод - C++

21.03.2014, 22:24. Просмотров 533. Ответов 13
Метки нет (Все метки)

Нужно написать бинарный вывод в файл. По учебнику вроде бы что-то в этом роде:

C++
1
2
3
4
5
6
7
ofstream f("test.bin", std::ios::binary);
if (f.is_open())
{
    f << j;
    f.close();
}else 
     cout << "Файл не может быть открыт" << endl;
однако файл сохраняется не в бинарном формате

Добавлено через 1 минуту
j - числовая константа;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2014, 22:24     Потоки. Бинарный ввод/вывод
Посмотрите здесь:

Бинарный ввод\вывод в файл - C++
#include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; class Person { private: char name; ...

Ввод-вывод, потоки - C++
Где лучше всего описано, как работает система вводы-вывода в C++ и что такое потоки? И желательно что-нибудь почитать про систему...

Потоки. Ввод-вывод. Ошибка на этапе компиляции. - C++
#include &lt;windows.h&gt; #include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; void main() { char...

Потоки. Ввод данных. - C++
Если согласится на ввод второго человека, пропускается ввод его имени... вроде ввод все правильно, не знаю в чем беда :wall: ...

Потоки. Ввод элементов в массив через пробельный символ - C++
Ребят, как ввести десятичные числа в массив через пробел? Допустим, есть массив Arr, я ввожу: 250 5 77 и элементы принимают соответственно...

Вывод в бинарный файл - C++
Надо вывести последовательность 0 и 1 в бинарный файл так чтобы это был двоичный код,т.е. каждый символ весил 1 бит

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,181
Завершенные тесты: 1
21.03.2014, 22:42     Потоки. Бинарный ввод/вывод #2
Используйте метод
C++
1
f.write(j,sizeof(j));
Andrei731
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 9
21.03.2014, 22:47  [ТС]     Потоки. Бинарный ввод/вывод #3
j - это целочисленная переменная. в программе задана
C++
1
int j;
Добавлено через 1 минуту
Вот весь код программы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <fstream>
 
int j = 4;
 
int main()
{
    setlocale(LC_ALL, "russian");
 
    using namespace std;
    
    ofstream f("test.bin", std::ios::binary);
    if (f.is_open())
    {
        f << j;
        f.close();
    }
    else cout << "Файл не может быть открыт" << endl;
 
    system("pause");
}
Добавлено через 1 минуту
Эта операция требует переменную типа char, а реализовать нужно с переменной int
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.03.2014, 22:53     Потоки. Бинарный ввод/вывод #4
Цитата Сообщение от Andrei731 Посмотреть сообщение
Эта операция требует переменную типа char, а реализовать нужно с переменной int
О какой операции идёт речь?
Andrei731
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 9
21.03.2014, 22:54  [ТС]     Потоки. Бинарный ввод/вывод #5
C++
1
f.write(j,sizeof(j));
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.03.2014, 22:58     Потоки. Бинарный ввод/вывод #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Режим, в котором открыт файл, не определяет, в общем случае, в каком виде будут записаны (или считаны) данные в файл. Это определяет метод записи (или чтения) из файла.

Добавлено через 3 минуты
Это так делается:
C++
1
f.write((const char*)&j,sizeof(j));
Andrei731
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 9
21.03.2014, 22:59  [ТС]     Потоки. Бинарный ввод/вывод #7
Изменив строку
C++
1
f << j
на
C++
1
f.write(j, sizeof(j));
получаю ошибку:
Ошибка 1 error C2664: "std::basic_ostream<char,std::char_traits<char>> &std::basic_ostream<char,std::char_traits<char>>::write(const _Elem *,std::streamsize)": невозможно преобразовать аргумент 1 из "int" в "const char *" c:\users\andre_000\documents\visual studio 2013\projects\проект2\проект2\main.cpp 40
2 IntelliSense: аргумент типа "int" несовместим с параметром типа "const char *" c:\Users\Andre_000\Documents\Visual Studio 2013\Projects\Проект2\Проект2\main.cpp 40

Добавлено через 1 минуту
Спасибо. Может посоветуете какую нибудь книгу по С++?
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.03.2014, 23:02     Потоки. Бинарный ввод/вывод #8
Цитата Сообщение от Andrei731 Посмотреть сообщение
Может посоветуете какую нибудь книгу по С++?
Литература C++
Andrei731
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 9
21.03.2014, 23:03  [ТС]     Потоки. Бинарный ввод/вывод #9
Это я уже смотрел. Мне бы поподробнее и с примерами)
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.03.2014, 23:05     Потоки. Бинарный ввод/вывод #10
Цитата Сообщение от Andrei731 Посмотреть сообщение
Это я уже смотрел
Это - что? Все книги посмотрели?
Цитата Сообщение от Andrei731 Посмотреть сообщение
Мне бы поподробнее и с примерами)
В книгах всё очень подробно и, обязательно, с примерами.
Andrei731
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 9
21.03.2014, 23:07  [ТС]     Потоки. Бинарный ввод/вывод #11
Смотрел книгу Харви Дейтла. Примеры там не совсем те которые хотелось бы
yur@
5 / 5 / 2
Регистрация: 06.03.2014
Сообщений: 106
21.03.2014, 23:09     Потоки. Бинарный ввод/вывод #12
Попробуй такой вариант под себя переделать:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int saveToList(list_head *list, int list_size){
    list_node *pr=list->head;
 
    fstream file;
    file.open("info1.txt", ios::out|ios::binary);
    if (file.fail()){
        cerr<<"File open error\n";
        return 0;
    }
    while(pr!=NULL){
        file.write((char*)pr->data, list_size);
        pr=pr->next;
        if (file.fail()){
            cerr<<"File write error\n";
        }
    }
    file.close();
    return 1;
}
Andrei731
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 9
21.03.2014, 23:10  [ТС]     Потоки. Бинарный ввод/вывод #13
Спасибо. Все получилось.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2014, 23:18     Потоки. Бинарный ввод/вывод
Еще ссылки по теме:

Вывод двумерного массива в бинарный файл - C++
функция вывода: void outputMassiv (int **arr, int Nr, int Nc) {ofstream binfile(&quot;D:/txt.bin&quot;, ios::app | ios::binary); for...

Бинарное считывание с файла и бинарный вывод. - C++
Пишу в Visual Studio 2008, давно не писал C++, поєтому возникли следующие вопросы по iostream, fstream #include &lt;iostream&gt; #include...

Потоки ввода / вывод - C++
Почему вот такая функция, при ifp = stdin читает символы пока они не кончатся в stdin. void filecopy(FILE *ifp, FILE *ofp){ int...

Неправильный вывод в бинарный файл с урезанием текста - C++
Ниже приведена программа которая урезает текст.Все бы хорошо но она при выводе в файл &quot;кушает&quot; символ новой строки.Например есть такой файл...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.03.2014, 23:18     Потоки. Бинарный ввод/вывод #14
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Andrei731 Посмотреть сообщение
Смотрел книгу Харви Дейтла. Примеры там не совсем те которые хотелось бы
Эта не понравилась - другие есть. В дополнение к книгам инет есть. Там всего хватает: и объяснений, и примеров.
http://ci-plus-plus-snachala.ru/?p=86
Открытие бинарного файла для чтения
и т.д, и т.п.
Yandex
Объявления
21.03.2014, 23:18     Потоки. Бинарный ввод/вывод
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru