Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Потоки


Автор: Sosed 26.8.2009, 13:27
Здравствуйте, как записать в файл переменную int и потом прочитать её?

Код

ofstream fout( "1.txt", ios::binary );
int i = 500;
fout.write( &i, sizeof( int ) ); // по идее так но не робит


Автор: azesmcar 26.8.2009, 13:33
Цитата(Sosed @  26.8.2009,  13:27 Найти цитируемый пост)
fout.write( &i, sizeof( int ) ); // по идее так но не робит

write принимает char*, ты ему передаешь int*.
Код

ofstream fout( "d:\\1.txt", ios::binary );
int i = 500;
fout.write( (char*)&i, sizeof( int ) );
fout.close();

Автор: Sosed 26.8.2009, 13:40
Емае, спасибо)

Автор: shuttle 27.8.2009, 05:25
Код

ofstream fout( "d:\\1.txt", ios::binary );
int i = 500;
fout.write( (char*)&i, sizeof( int ) );
fout.close();


У меня  полная ерунда в файл записалась.

Автор: andrew_121 27.8.2009, 05:36
а что ты хочешь чтоб там было?

Автор: azesmcar 27.8.2009, 08:40
Цитата(shuttle @  27.8.2009,  05:25 Найти цитируемый пост)
У меня  полная ерунда в файл записалась. 

файл бинарный, числа 500 в текстовом редакторе ты там не увидишь (если ты об этом).

Автор: bsa 27.8.2009, 10:01
Можно так писать и читать:
Код
ofstream fout( "d:\\1.txt", ios::binary );
int i = 500;
fout.write( (const char*)&i, sizeof( *i ) );
fout.close();
...
ifstream fin( "d:\\1.txt", ios::binary );
int i;
fin.read( (char*)&i, sizeof( *i ) );
fin.close();
Но судя по расширению файла, тебе он нужен не бинарным. Поэтому логичней делать так:
Код
ofstream fout("d:\\1.txt");
int i = 500;
fout << i << std::endl;
fout.close();
...
ifstream fin("d:\\1.txt");
int i;
fin >> i;
fin.close();

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)