#include<iostream>
#include<string>
#include<set>
#include<sstream>
#include<stdio.h>
using namespace std;
set<string> dict;
//set<string> tmp;
int main()
{
/* freopen("data.in","r",stdin);
freopen("data.out","w",stdout);*/
string s,buf;
while(cin>>s)
{
for(int i=0;i<s.length();i++)
if(isalpha(s[i]))
s[i]=tolower(s[i]);
else
s[i]=' ';
//cout<<"s="<<s<<endl;
stringstream ss(s); //这里是重点
// cout<<"ss后="<<s<<endl;
while(ss>>buf)
{
dict.insert(buf);
// cout<<"buf="<<buf<<endl;
}
// tmp.insert(s);
}
for(set<string>::iterator it=dict.begin();it!=dict.end();++it)
cout<<*it<<"\n";
//* for(set<string>::iterator it2=tmp.begin();it2!=tmp.end();++it2)
// cout<<*it2<<"\n";
}
stringstream ss(s)和直接将s插入的区别
直接插入会出现多一个空格的情况(两个标点时)
1,set 的用法,自动排序的集合
2,stringstream