在c ++中无法多次读取文件

时间:2012-06-28 16:10:01

标签: c++ file

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

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

1 个答案:

答案 0 :(得分:6)

当您将文件读作while(fileRead >> data)时,在退出循环之前,会为流对象设置失败标志。实际上,它设置为为什么它退出循环。您需要清除此失败标志:

fileRead.clear(); //clear the failure flag
fileRead.seekg (0, ios::beg);
//now read