Andy‘s First Dictionary 题意:输入一个文本,找出所有不同的单词(连续的字母序列),按字典序从小到大输出,单词不区分大小写。
代码语言:javascript复制#include<iostream>
#include<string>
#include<set>
#include<sstream>
using namespace std;
set<string> dict; // string的集合
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 << "n"; // Set中元素已按从小到大顺序排好序
return 0;
}
代码语言:javascript复制stringstream主要是用在將一个字符串分割,可以先用.clear( )以及.str( )將指定字串设定成一开始的內容,再用>>把个別的资料输出。
举个例子:
題目:输入的第一行有一个数字 N 代表接下來有 N 行资料,每一行资料里有不固定个数的整数(最多20个,每行最大200个字元),编程將每行的总和打印出來。
输入:
3
1 2 3
20 17 23 54 77 60
111 222 333 444 555 666 777 888 999
输出:
6
251
4995
代码语言:javascript复制#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
string s;
stringstream ss;
int n;
cin >> n;
getline(cin, s); //读取换行
for (int i = 0; i < n; i )
{
getline(cin, s);
ss.clear();
ss.str(s);
int sum = 0;
while (1)
{
int a;
ss >> a;
if(ss.fail())
break;
sum = a;
}
cout << sum << endl;
}
return 0;
}