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

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

Восстановить пароль Регистрация
 
Andrei731
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 9
21.03.2014, 22:24     Потоки. Бинарный ввод/вывод #1
Нужно написать бинарный вывод в файл. По учебнику вроде бы что-то в этом роде:

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 - числовая константа;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,165
Завершенные тесты: 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
5282 / 4801 / 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
5282 / 4801 / 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
5282 / 4801 / 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
5282 / 4801 / 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++ Бинарный ввод\вывод в файл
C++ Поменять консольный ввод-вывод на файловый ввод-вывод
C++ Ввод-вывод, потоки

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 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     Потоки. Бинарный ввод/вывод
Ответ Создать тему
Опции темы

Текущее время: 16:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru