因为需要找出不同的单词,所以可以利用set的性质,即元素不重复并且是有序的(这样就不用再排序)。
- 1.几个函数:
- isalpha() 判断字符是否是字母,如是,返回值为true
- tolower() 将字母转化为小写字母,如不是字母,则不作处理
- 2.字符串流读入时会自动略过空格,所以如果只想提取单词可以将所有的标点符号都变成空格。
- 3.set的常用函数:
- set.insert(), set.begin(), set.end()
- 4.迭代器:因为不能直接访问集合中的元素,所以要使用迭代器(迭代器类似于指针)
#include<iostream>
#include<cstdio>
#include<set>
#include<cstring>
#include<sstream>
using namespace std;
string s,buf;
set<string> dic;
int main()
{
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) dic.insert(buf);
}
for (set<string>::iterator it = dic.begin(); it !=dic.end(); it++)
cout<< *it << endl;
return 0;
}