我需要创建一个程序来读取文件,计算其中的单词,并列出其频率的唯一单词。程序会考虑任何一系列字符,而不是空格(所以“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);
}
答案 0 :(得分:1)
这是一种痛苦的方法...你最好阅读字符串,它们会被空格自动分隔。
string word;
map<string,int> freq;
while( in >> word ) {
freq[word]++;
}
请注意,在您提供的示例中,您使用了'/n'
,其应为'\n'
。在我的例子中,你甚至不需要它。
答案 1 :(得分:0)
我会创建地图,http://www.cplusplus.com/reference/map/map/,如果单词存在增量频率,否则将该单词添加到地图中。
通过这种方式,您可以快速检查单词是否存在,以获得唯一的列表。