c++ 尝试计算每个单词在这个文本文件中的出现次数,但没有效果,我找不到问题出在哪里

qkf9rpyu  于 2023-01-18  发布在  其他
关注(0)|答案(1)|浏览(88)
#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;
}

正如我在标题中所说,我不知道它有什么问题,当我试图在终端编译它时,它工作正常,但没有输出。
这些是指示:
逐字阅读文本文件。
创建一个单词集合,使你的程序能够区分不同的单词,例如,将每个不同的单词存储在一个向量中。注意,'Our'和'our'应该算作同一个单词,也就是说,你的程序将大小写字母视为相同。
每当一个单词出现时,你的程序就需要计算这个单词在文件中出现的次数。
最后打印一个报告,其中包含每个单词及其在所提供的文本文件中出现的次数。
您只能使用iostream、fstream、string和vector库。

qxsslcnc

qxsslcnc1#

输入printReport

i > words.size();

应该是

i < words.size();

这足以解释为什么没有输出,但是您还应该检查文件是否成功打开,这也是一个可能的解释。
正如评论中所说,您越早学习如何使用调试器,以便自己查找像这样的简单错误,效果越好。

相关问题