我找不到独特的单词,如何改进代码?

时间:2013-09-30 16:25:29

标签: c++

我需要计算唯一单词的数量,并使用下面的代码,它似乎没有正确计数。我不知道我还能做些什么才能让它发挥作用,并且非常感谢任何建议。

#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;
}

1 个答案:

答案 0 :(得分:0)

for循环结束时,您需要检查word是否为空。如果不是,则需要在集合中推送word的内容。

for循环的结束括号后,添加:

if (word != "")
    uw.insert(word);

作为you can see,它在编辑后效果很好。