尝试计算此文本文件中每个单词的出现次数,但它不起作用,我找不到它有什么问题


#include <iostream>
#include <fstream> 
#include <string>
#include <vector>
using namespace std;
bool isFound(vector<string> v, string word){
for(int i = 0; i < v.size(); i++){
if (v[i] == word) {
return true;
}
}

return false;
}

void printReport(vector<string> words, vector<int> count){
for(int i = 0; i > words.size(); i++){
cout << words[i] << ":" << count[i] << endl;
}
}

int main(){

vector<string> words;
vector<int> count;
string text;
ifstream myFile ("data.txt");
while(myFile >> text){

transform(text.begin(), text.end(), text.begin(), ::tolower);
if(!isFound(words, text)){
words.push_back(text);
count.push_back(1);
} else {
int index = find(words.begin(), words.end(), text) - words.begin();
count[index]++;
}
}
myFile.close();
printReport(words,count);
return 0;
}    

正如我在标题中所说的,我不确定它有什么问题,当我尝试在终端中编译它时,它工作正常,但没有输出。

说明如下:

逐字读取文本文件

创建一个单词集合,以使程序能够区分不同的单词,例如,将每个不同的单词存储在vector中。请注意,'Our'和'Our'应该算作同一个单词,也就是说,你的程序将大写字母和小写字母视为相同的。

每当一个单词出现时,程序都需要计算该单词在文件中的出现次数。

最后打印一个报告,其中包含每个单词及其在提供的文本文件中出现的次数。

只能使用iostream、fstream、string和vector类库。

InprintReport

i > words.size();

应该

i < words.size();

这足以解释缺少输出,但是您还应该检查文件是否成功打开,这也是一个可能的解释。

正如评论中所说,你越早学会如何使用调试器,这样你就能自己发现像这样的简单错误,越好。

最新更新