我需要计算唯一单词的数量,并使用下面的代码,它似乎没有正确计数。我不知道我还能做些什么才能让它发挥作用,并且非常感谢任何建议。
#include <iostream>
#include <string>
#include <set>
using std::string;
using std::set;
unsigned long countUWords(const string& s)
{
set<string> uw;
string word = "";
for(size_t i = 0; i < s.size(); i++){
bool words = (s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z');
if(words){
word += s[i];
}
else if(!words && word != ""){
uw.insert(word);
word = "";
}
}
if (word != "")
uw.insert(word);
return uw.size();
}
int main ()
{
string s;
unsigned long UWords = 0;
while(getline(cin, s)){
UWords += countUWords(s);
}
cout << UWords << endl;
return 0;
}
答案 0 :(得分:0)
在for
循环结束时,您需要检查word
是否为空。如果不是,则需要在集合中推送word
的内容。
在for
循环的结束括号后,添加:
if (word != "")
uw.insert(word);
作为you can see,它在编辑后效果很好。