Problem C Andy's First Dictionary(set的使用)

题目链接:Problem C

题意:输入一个文本,找出所有不同的单词,按照字典序从小到大输出,单词不区分大小写。

思路:将字母序列都存为小写,非字母的字符变成空格,然后利用stringstream实现sting对象的自动格式化。

note: 
stringstream对象的使用 #include
<sstream> #include<iostream> using namespace std; int main() { string line,word; while(getline(cin,line)) { stringstream stream(line); cout<<stream.str()<<endl; while(stream>>word){cout<<word<<endl;} } return 0; } /* * input: shanghai no1 school 1989 * output: shanghi no1 school 1989 * shanghai * no1 * school * 1989 */

code:

 1 #include <iostream>

 2 #include <string>

 3 #include <set>

 4 #include <sstream>

 5 #include <cctype>

 6 using namespace std;

 7 set<string> dirt;

 8 int main()

 9 {

10     string str, word;

11     dirt.clear();

12     while (cin >> str)

13     {

14         int len = str.size();

15         for (int i = 0; i < len; ++i)

16         {

17             if (isalpha(str[i])) str[i] = tolower(str[i]);

18             else str[i] = ' ';

19         }

20         stringstream buf(str);

21         while (buf >> word) dirt.insert(word);

22     }

23     set<string>::iterator it;

24     for (it = dirt.begin(); it != dirt.end(); ++it)

25         cout << *it << endl;

26     return 0;

27 }

 

你可能感兴趣的:(first)