Я разрабатываю приложение под Windows и использую fstreams для чтения и записи в файл.
Я пишу с открытым fstream так:
fs.open(this->filename.c_str(), std::ios::in|std::ios::out|std::ios::binary);
и писать с помощью этой команды
fs.write(reinterpret_cast<char*>(&e.element), sizeof(T));
закрытие файла после каждой записи с помощью
fs.close()
Чтение с открытым потоком так:
is.open(filename, std::ios::in);
и чтение с помощью этой команды:
is.read(reinterpret_cast<char*>(&e.element), sizeof(T));
Запись идет нормально. Тем не менее, я читал в цикле так:
while(!is.eof())
{
is.read(reinterpret_cast<char*>(&e.element), sizeof(T));
}
и программа продолжает чтение, даже если конец файла должен быть достигнут. istellg pos равно 0, а gcount тоже равно 0, но бит сбоя и бит eof оба в порядке.
Я схожу с ума по этому поводу, нужна помощь ...