计算字符串向量中单词的出现次数

时间:2013-04-26 21:25:20

标签: c++ string vector

我正在尝试创建一个将文件读入字符串向量的字典,并计算每个唯一字出现的次数。这是我到目前为止所做的:

int main()
{
    ifstream input1;
    input1.open("Base_text.txt");

    vector<string> base_file;
    vector<int> base_count;


    if (input1.fail())
    {
        cout<<"Input file 1 opening failed."<<endl;
        exit(1);
    }

    make_dictionary(input1, base_file, base_count);


}

void make_dictionary(istream& file, vector<string>& words, vector<int>& count)
{


    string word;
    int i=0;

    while (file>>word)
    {
        words.push_back(word);
        cout<<words[i];
        i++;
    }


    for (i=0; i<words.size(); i++)
    {
        if ((words[i+1]!=words[i]))
            {
                count.push_back(i);

            }
    }

问题1:如何让向量包含空格并识别单个单词? 问题2:任何想法如何继续第二部分(for loop)?

1 个答案:

答案 0 :(得分:5)

效率很低。你应该使用

 std::map<string, int> 

代替。它既简单又有效。

循环遍历文件。当你看到一个单词时,看看它是否在地图中。如果不是,请添加一个带有计数的新单词1.如果是,则递增计数。

相关问题