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