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