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

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

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

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

21.03.2014, 22:24. Просмотров 549. Ответов 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 - числовая константа;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2014, 22:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Потоки. Бинарный ввод/вывод (C++):

Записать в бинарный файл массив объектов Student (бинарный файловый ввод/вывод) - C++
Здравствуйте. Стоит задача записать в бинарный файл массив объектов student: class student { string firstname,lastname, group; ...

Бинарный ввод\вывод в файл - 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 &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; ...

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

Бинарный файловый ввод/вывод: реализовать операции для работы с массивом структур типа WORKER - C++
Здравствуйте, видел очень много подобных программ, но у меня особый случай в общем суть программы: Описать структуру с именем WORKER, что...

13
zss
Модератор
Эксперт С++
6403 / 5969 / 1945
Регистрация: 18.12.2011
Сообщений: 15,370
Завершенные тесты: 1
21.03.2014, 22:42 #2
Используйте метод
C++
1
f.write(j,sizeof(j));
0
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
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.03.2014, 22:53 #4
Цитата Сообщение от Andrei731 Посмотреть сообщение
Эта операция требует переменную типа char, а реализовать нужно с переменной int
О какой операции идёт речь?
0
Andrei731
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 9
21.03.2014, 22:54  [ТС] #5
C++
1
f.write(j,sizeof(j));
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.03.2014, 22:58 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Режим, в котором открыт файл, не определяет, в общем случае, в каком виде будут записаны (или считаны) данные в файл. Это определяет метод записи (или чтения) из файла.

Добавлено через 3 минуты
Это так делается:
C++
1
f.write((const char*)&j,sizeof(j));
1
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 минуту
Спасибо. Может посоветуете какую нибудь книгу по С++?
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.03.2014, 23:02 #8
Цитата Сообщение от Andrei731 Посмотреть сообщение
Может посоветуете какую нибудь книгу по С++?
Литература C++
0
Andrei731
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 9
21.03.2014, 23:03  [ТС] #9
Это я уже смотрел. Мне бы поподробнее и с примерами)
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.03.2014, 23:05 #10
Цитата Сообщение от Andrei731 Посмотреть сообщение
Это я уже смотрел
Это - что? Все книги посмотрели?
Цитата Сообщение от Andrei731 Посмотреть сообщение
Мне бы поподробнее и с примерами)
В книгах всё очень подробно и, обязательно, с примерами.
0
Andrei731
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 9
21.03.2014, 23:07  [ТС] #11
Смотрел книгу Харви Дейтла. Примеры там не совсем те которые хотелось бы
0
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;
}
1
Andrei731
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 9
21.03.2014, 23:10  [ТС] #13
Спасибо. Все получилось.
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.03.2014, 23:18 #14
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Andrei731 Посмотреть сообщение
Смотрел книгу Харви Дейтла. Примеры там не совсем те которые хотелось бы
Эта не понравилась - другие есть. В дополнение к книгам инет есть. Там всего хватает: и объяснений, и примеров.
http://ci-plus-plus-snachala.ru/?p=86
Открытие бинарного файла для чтения
и т.д, и т.п.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2014, 23:18
Привет! Вот еще темы с ответами:

Написать структуру "Список книг" (бинарный файловый ввод/вывод) - C++
Здравствуйте, Дорогие форумчане! Всех с наступающим. Задача: написать 2 консольных приложения: 1-ое осуществляет вывод списка &quot;книг&quot; в...

Заменить в программе, переводящую строку в двоичный код, консольный ввод/вывод на файловый ввод/вывод - C++
Добрый день! Помогите, пожалуйста, с программой. Программа считывает строку с клавиатуры и переводит её в двоичный код. затем наоборот...

Поменять консольный ввод-вывод на файловый ввод-вывод - C++
вот у меня калькулятор как мне сделать что б числа вводились из файла и результат записывался в новый файл ? // ОБРАТНАЯ...

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


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

Или воспользуйтесь поиском по форуму:
14
Yandex
Объявления
21.03.2014, 23:18
Ответ Создать тему
Опции темы

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