c + +的iostream不是EOF设置位即使gcount的返回0
题
我深化发展窗户下的应用程序,并且我使用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太多,但失败位和EOF位都是好的。
我跑过来这个疯狂的,需要一些帮助......
解决方案
尝试这种情况:
while(is.read(reinterpret_cast<char*>(&e.element), sizeof(T))) {}
此外应打开与istream
标志binary
以及:
is.open(filename, std::ios::in | std:ios::binary);
如果它读取永远,这是什么看?什么类型为T?
不隶属于 StackOverflow