C ++ non iostream impostazione EOF po ', anche se i rendimenti gcount 0
Domanda
sto sviluppando un'applicazione in Windows, e sto usando fstreams per leggere e scrivere il file.
che sto scrivendo con fstream aperto in questo modo:
fs.open(this->filename.c_str(), std::ios::in|std::ios::out|std::ios::binary);
e la scrittura con questo comando
fs.write(reinterpret_cast<char*>(&e.element), sizeof(T));
chiudere il file dopo ogni operazione di scrittura con
fs.close()
La lettura con ifstream aperto in questo modo:
is.open(filename, std::ios::in);
e la lettura con questo comando:
is.read(reinterpret_cast<char*>(&e.element), sizeof(T));
La scrittura sta andando bene. Tuttavia, ho letto in un ciclo in questo modo:
while(!is.eof())
{
is.read(reinterpret_cast<char*>(&e.element), sizeof(T));
}
e il programma mantiene la lettura, anche se alla fine del file dovrebbe essere raggiunto. pos istellg è 0, e gcount è uguale a 0 anche, ma il bit non riescono e EOF po 'sono entrambi bene.
Io corro pazzo su questo, ha bisogno di aiuto ...
Soluzione
Prova questo:
while(is.read(reinterpret_cast<char*>(&e.element), sizeof(T))) {}
Inoltre si dovrebbe aprire il istream
con la bandiera binary
così:
is.open(filename, std::ios::in | std:ios::binary);
Se si legge sempre, cosa leggere? Che tipo è T?