行结束字计数(C ++)

时间:2014-02-13 02:43:27

标签: c++

我需要创建一个程序来读取文件,计算其中的单词,并列出其频率的唯一单词。程序会考虑任何一系列字符,而不是空格(所以“hello”,“hello”和“,。?”都是不同的单词)。我在使用if语句和在行尾添加一个单词到我的单词计数时遇到了困难。它计算在它们后面有空格而不是'/ n'的单词。这是我用来计算单词的代码:

in.get(last);
in.get(current);
while(!in.eof())
{
    if((current == ' ' && last != ' ') || (current == '/n' && last != ' ' && last != '/n'))
        count++;
    last = current;
    in.get(current);
}

2 个答案:

答案 0 :(得分:1)

这是一种痛苦的方法...你最好阅读字符串,它们会被空格自动分隔。

string word;
map<string,int> freq;

while( in >> word ) {
    freq[word]++;
}

请注意,在您提供的示例中,您使用了'/n',其应为'\n'。在我的例子中,你甚至不需要它。

答案 1 :(得分:0)

我会创建地图,http://www.cplusplus.com/reference/map/map/,如果单词存在增量频率,否则将该单词添加到地图中。

通过这种方式,您可以快速检查单词是否存在,以获得唯一的列表。