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

Иероглифы при чтении из файла - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Проверка условия окончания цикла for http://www.cyberforum.ru/cpp-beginners/thread11197.html
Здраствуйте. Проблема заключается в следующем. Есть следующий цикл: for( int i=2; !((n%i||d%i)&&!(n%i&&d%i))==0 ; i++){ while ((n%i||d%i)==0){ ...
C++ Как использовать функцию класса в другом классе (ни один из классов не наследует другой)? функция в классе в котором она прописана объявлена как паблик. void auction::rvectoroldtime(int oldtime1, double low, double high ) { vectoroldtime=(double *)calloc(oldtime*4, sizeof(double));... http://www.cyberforum.ru/cpp-beginners/thread11177.html
C++ Инициализация двумерного массива
Чет не понимаю на что возмущается компилятор... Заполняю как и заполнял раньше... char my_array; int x = 0; int t = 2; for(; x < 2; x++) { my_array = "*"; std::cout << my_array; } t--; x = 0;...
преобразование типов C++
открываю файл при помощи функции fopen, имя файла нужно получить из OpenDialog! пытался вытащить путь к файлу в char, но fopen его не видит!!! подскажите плиз что делать!!!
C++ Вопрос про указатели http://www.cyberforum.ru/cpp-beginners/thread11155.html
#include <iostream.h> int main() { int x; int *Pointer; pointer = &x; cout << pointer; cout << *ponter; return 0; }
C++ Можно ли использовать клаcсы MFC (например CString) при создании проекта Win32? я работаю в вижуал студио 2003 подробнее

Показать сообщение отдельно
Vourhey
Почетный модератор
6482 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
13.08.2008, 12:00
Разделять переносом строки идеологически надежней. Если уж на то пошло, то вообще без символа конца строки все можно прочитать. Вот только это не катит...
Я показал, как мне удобней. Некоторые либы (был у меня случай когда-то) по умолчанию в качестве разделителя видят перенос, а не пробельные символы. Поэтому и читалось все подряд.
Да и вообще! Проблема совсем не в endl. А в том, что файл не закрыт и конца ему не видно

Последовательные данные без разницы, как располагать. Главное то, как они читаться будут. Если ничего не планируется больше, то можно и в строку и вообще без endl.
Код
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;

int main() {
	ofstream txtfile("Testfile.txt");
    if (! txtfile) { 
        cout<<"didn't create!";
        exit(-1);
    }
    int a = 1;
    char d = 'a';
    char e = 'b';
    txtfile<<a<<d<<e;
	txtfile.flush();

    FILE *file = fopen("Testfile.txt", "rb");
    if (! file) { 
        cout<<"didn't open!";
        exit(-1);
    }
    __int8 f;
    char *n = (char*)malloc(3);
    
    fread(&f, 1, 1, file);
	fread(n, 1, 2, file);
	*(n+2) = '\0';

    cout<<"data from file: \n";
    cout<<"int = "<<f<<endl;
    cout<<"\nchars = "<<n;

	cin.get();
    return 0;
}
Вызов flush еще надежней, чем endl. Он добавит символ конца файла сам. И спокойно можно обойтись без любых разделителей
Также можно просто закрыть стрим сохранив его в файл ( txtfile.close(); ). Конец файла добавится и тоже все будет работать. Так что кому-то "достаточно" endl, кому-то он и не нужен
Способов - куча.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru