我深化发展窗户下的应用程序,并且我使用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?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top