通过分析可以得出空格出现在三个位置,前中后,然后对空格做处理就可以了,自己错得地方在于忘记初始化。。
#include <iostream>
#include <map>
#include <cstring>
#include <string>
using namespace std;
int main()
{
map<string,int> mp;
char str[1000];
while(1)
{
mp.clear();
gets(str);
if(strlen(str)==1&&str[0]=='#')
break;
string str1;
int cont1=0;
str[strlen(str)]=' ';
for(int i=0;str[i]!='\0';i++)
{
if(str[i]==' ')
{
if(cont1==1)
{
mp[str1]=1;
str1.clear();
cont1=0;
}
}
else
{
str1.push_back(str[i]);
cont1=1;
}
}
map<string,int>::iterator it;
for(it=mp.begin();it!=mp.end();it++)
{
cout<<it->first<<endl;
}
printf("%d\n",mp.size());
mp.clear();
}
return 0;
}