我正在 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()
使用 ifstream 读取打开如下:
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,但 fail 位和 eof 位都可以。
我为此发疯了,需要一些帮助......