思路
需要注意的是要将所有的非字母的字符变为空格,然后分别用stringstream得到各个单词
代码
注:有关isalpha函数和tolower函数在头文件cctype中,但经测试,如果不包含头文件cctype仅仅有iostream也是可以的。
(代码紫皮书p112)
#include<iostream>
#include<string>
#include<set>
#include<sstream>
using namespace std;
set<string> dict;
int main()
{
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]=' ';
//得到各个单词
stringstream ss(s);
while(ss>>buf)
dict.insert(buf);
}
//迭代器
for(set<string>::iterator it=dict.begin();it!=dict.end();it++)
cout<<*it<<endl;
return 0;
}
运行结果
window10下运行结果:
ubuntu64运行结果:
注:关于crtl+Z和crtl+D,参看此链接