0

在我的作业中,我在读取文件时遇到问题。请参阅以下代码段。

    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循环在读完一个单词后就结束了?

4

1 回答 1

6

当您将文件读取为while(fileRead >> data)时,会在退出循环之前为流对象设置失败标志。事实上,它设置这就是它退出循环的原因。您需要清除此 失败标志:

fileRead.clear(); //clear the failure flag
fileRead.seekg (0, ios::beg);
//now read
于 2012-06-28T16:13:00.457 回答