我正在尝试从文件中读取文本,这就是我正在做的事情:
int main(int argc, char* argv[])
{
ifstream inFile;
inFile.open(argv[1]);
string item;
while(inFile.good())
{
  inFile >> item;
  cout << item << " " << endl;
}由于某些原因,它将读取文件中的最后一个单词两次。我尝试使用count变量来跟踪它进入while循环的次数,但它进入的次数总是比文件中的总行数多一次。我认为之所以会发生这种情况,是因为inFile.good()语句没有及时返回false。如果是这样的话怎么解决呢?
发布于 2015-10-17 06:00:11
其他人已经展示了您应该编写的代码,所以我将解释为什么您的代码不能工作。
实际上,istream.good()“不会很快返回false”。在你读完文件中的最后一项后,它仍然是真的。只有当您试图读取超过文件末尾的一个项目时,它才会变为false。
问“我已经到文件末尾了吗?”的各种方式。C和C++具有相同的语义。这是因为底层操作系统原语read不能同时返回数据和信号EOF。
https://stackoverflow.com/questions/33180098
复制相似问题