在我的作业中,我遇到了阅读文件的问题。请参阅以下代码段。
std::string data;
std::ifstream fileRead;
fileRead.open("a.txt");
while (fileRead >> data)
{
long a = fileRead.tellg();
fileRead.seekg (a+1, ios::beg);
std::string check;
//some code here
while (fileRead >> check)
{
//some code here
}
fileRead.seekg (a+1, ios::beg);
}
我必须检查文件中有多少相同的单词。我的逻辑是,我读了一个字并将其保存在数据中。然后我继续使用fileRead.seekg(a + 1,ios :: beg)读取该单词之后;然后我比较文件中的每个单词。
检查整个文件后,我再次使用此行fileRead.seekg(a + 1,ios :: beg)将我的文件对象放到下一个单词中;但这条线不起作用。我的意思是第一次while循环只工作一次。有人请帮帮我。
顺便说一下,我在文件操作方面是全新的。因此,在这种情况下,我的逻辑或概念可能不正确,请告诉我这样做的正确方法是什么?但我需要知道为什么第一次while循环在读完一个单词后结束?
答案 0 :(得分:6)
当您将文件读作while(fileRead >> data)
时,在退出循环之前,会为流对象设置失败标志。实际上,它设置为为什么它退出循环。您需要清除此失败标志:
fileRead.clear(); //clear the failure flag
fileRead.seekg (0, ios::beg);
//now read