行尾字数统计 (C++)

End of Line Word Counting (C++)

本文关键字:C++ 统计      更新时间:2023-10-16

我需要创建一个程序来读取文件,计算其中的单词,并列出唯一的单词及其频率。该程序将任何没有空格的字符系列视为一个单词(因此类似于"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);
}

这是一种痛苦的方法... 您最好读取字符串,这些字符串由空格自动分隔。

string word;
map<string,int> freq;
while( in >> word ) {
    freq[word]++;
}

请注意,在您给出的示例中,您使用了 '/n' ,这应该是'n' 。 在我的示例中,您甚至不需要它。

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

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