题目链接:点击打开链接
练习set的用法,可参考紫书112页
AC代码:
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <set>
#include <sstream>
#include <cctype>
using namespace std;
set<string> dict; //string集合
int main()
{
string s, buf;
while(cin >> s)
{
//cout << s.length() << endl;
for(int i = 0; i < s.length(); ++i)
{
if(isalpha(s[i])) s[i] = tolower(s[i]);
else s[i] = ' ';
//cout << s[i] << endl;
}
//因为会有非字母的字符出现 所以先将非字母的字符转变为空格 然后通过stringstream将其消除
stringstream ss(s);
//while(cin >> buf) dict.insert(buf); 因为这里不小心写错了 WA到我怀疑人生_(:зゝ∠)_
while(ss >> buf) dict.insert(buf);
}
for(set<string>::iterator it = dict.begin(); it != dict.end(); ++it)
cout << *it << endl;
return 0;
}
PS:之前在紫书上见过<cctype>,今天用到了,顺便整理一下吧
以下为字符函数库中常用的函数:
函数名称 | 返回值 |
isalnum() | 如果参数是字母数字,即字母或数字,该函数返回true |
isalpha() | 如果参数是字母,该函数返回真 |
isblank() | 如果参数是空格或水平制表符,该函数返回true |
iscntrl() | 如果参数是控制字符,该函数返回true |
isdigit() | 如果参数是数字(0~9),该函数返回true |
isgraph() | 如果参数是除空格之外的打印字符,该函数返回true |
islower() | 如果参数是小写字母,该函数返回true |
isprint() | 如果参数是打印字符(包括空格),该函数返回true |
ispunct() | 如果参数是标点符号,该函数返回true |
isspace() | 如果参数是标准空白字符,如空格、进纸、换行符、回车 、水平制表符或者垂直制表符,该函数返回true |
isupper() | 如果参数是大写字母,该函数返回true |
isxdigit() | 如果参数是十六进制的数字,即0~9、a~f、A~F,该函数返回true |
tolower() | 如果参数是大写字符,则返回其小写,否则返回该参数 |
toupper() | 如果参数是小写字母,则返回其大写,否则返回该参数 |