C++ 输出在读取文本文件时跳过最后一个单词

C++ Output is skipping last word when reading through text file

本文关键字:最后一个 单词 文件 输出 读取 取文本 C++      更新时间:2023-10-16

我有一个我打开的大文本文件的向量,以及一个我也打开的搜索词文件。我有两个函数,是NextWord,它检查是否有另一个单词,getNextWord可以获取下一个单词。

我检查搜索词是否在向量中,然后在最后打印出所有出现的情况。我的代码几乎完美地工作,除了它跳过搜索词文件中的最后一个单词。

例如,如果我的话是:hello,these,are,my,search,words它将显示除"单词"之外的所有出现:

hello 5
these 2
are 5
my 7
search 9

这是我的 cpp 文件:

string ReadWords::getNextWord()
{
//gets next word of input from file
 return theword;
}

bool ReadWords::isNextWord()
{
return !eoffound;
}

这是我的主要

while (search.isNextWord()) {
        int occ= 0;
        string wordFound= search.getNextWord();
        for(int i=0; i < vct.size(); i++){
            if(vct[i] == wordFound) {
                occ++;
            }
        }

       cout << wordSearch <<  " " << occ<< endl;
    }

为什么它最后一次不执行getNext单词?

当 eof 标志得到最后一个单词时,你正在激活它,然后,函数 ReadWords::isNextWord(( 返回 false 并且循环已结束,最后一个单词永远不会打印。 例如,当返回单词搜索时,您阅读最后一个并启用标志。

我建议将函数是NextWord更改为

bool ReadWords::isNextWord() {return !(wordfile.eof()); }