C ++:程序跳到最后

时间:2018-02-05 07:16:58

标签: c++ dictionary space

我的目标是将单词及其计数存储在具有一些空格分隔的给定字符串中。我使用地图缓存来计算重复的单词,逻辑似乎很好。 但是,我真的没有得到,它有什么不对。看起来,程序跳到最后并显示一些垃圾输出。 这是我的代码:

#include <iostream>
#include <map>
#include <string>
using namespace std;

int main()
{
    int T; cin>>T;
    for(auto t=0; t<T; ++t){
       string full;             // sentance/ string with spaces
       getline(cin,full);

       map<string, int> Map;    // word and its count 

       string strWords;
       strWords.clear();

       for (int i = 0; i<full.length(); i++)
       {
         if (full[i] == ' ')
         {
            Map[strWords]++;
            strWords.clear();   // clear it for next word
         }
         else
            strWords += full[i];// if there is no space, build word!
       }
         Map[strWords]++;       // for the last word in the string  

      for(auto &it: Map)
        cout<<it.first<<" "<<it.second<<endl;
    }
    return 0;
}

示例:输入

1
yoy yoy koy koy

我得到了一个输出:

1

而不是

yoy 2
koy 2

0 个答案:

没有答案