原題目地址:點擊打開鏈接
【題目大意】
給定一個文章段落,要求按字典序輸出出現的所有單詞(不重複)
【解題思路】
要求不重複且按照字典序排序,想到利用STL中的set容器,那麼怎麼在set裏存儲字符串呢?
蒐集了多種方法,最後發現還是利用C++string類來的方便,不過這就帶來一個問題。printf,scanf只支持內置類型,對string類型不支持的。這時候不得以都要換上cin,cout。
另外還需要使用到stringstream,從新建立字符串流。首先將raw輸入中把非字母的變爲' ',大小寫轉換一下再逐行輸入到stingstream中,然後再從流中全部輸出到set容器裏。遍歷一遍set輸出即可。
【解題代碼】
先附上自己的代碼
#include <iostream>
#include <string>
#include <sstream>
#include <set>
using namespace std;
//初認識set 以及 stringstream
set<string> dic;
int main()
{
string s, a;
while (getline(cin, s))
{
for (int i = 0; i < s.length(); i++)
{
if (isalpha(s[i]))
s[i] = tolower(s[i]);
else s[i] = ' ';
}
stringstream stringin(s);
while (stringin >> a)
{
dic.insert(a);
}
/*set<string>::iterator point;
for (point = dic.begin(); point != dic.end(); point++)
cout << *point << endl;*/
}
set<string>::iterator point;
for (point = dic.begin(); point != dic.end(); point++)
cout << *point << endl;
return 0;
}
附上本題學習的bloc:點擊打開鏈接【收穫與反思】
在思路里寫的差不多了。
1.set容器的使用。
2.string類的認識,需要用cin,cout輸入輸出。以及要用到std::string::length方法來獲取長度,不能再用c中的strlen。
3.迭代器的第一次使用。