明天早上8点就要出差,而且似乎说晚上可能回不来……这好烦啊,一天又要浪费掉了,昨天晚上看了些面经,发现我真的差了好多。然后看了点leetcode,似乎说很有用啊。等过几天去好好看下,还有一星期要考6级,到现在都没过,感觉好难。看了点阅读今天。
string
当把string对象和字符字面值混在一条语句中时,必须确保每个运算符的两侧至少有个是string
string s1="hello";
string s2=s1+"world"; //正确,把一个string与一个字面值相加
string s3="hello"+"world"+s1 //错误,字面值不能直接相加
处理单字符
//cctype头文件
isalnum(c) //当c是字母或数字时为真
isalpha(c) //当c是字母时为真
iscntrl(c) //当c是控制字符时为真
isdigit(c) //当c是数字时为真
isgraph(c) //当c不是空格但可以打印时为真
islower(c) //当c是小写字母时为真
isprint(c) //当c是可打印字符时为真(c是空格或c具有可视形式)
ispunct(c) //当c是标点符号时为真
isspace(c) //当c是空白时为真(空格,横向制表,纵向制表,回车,换行,进纸)
isupper(c) //当c是大写字母时为真
isxdigit(c) //当c是十六进制数字时为真
tolower(c) //当c是大写字母输出对应小写字母,否则原样输出
toupper(c) //当c是小写字母输出对应大写字母,否则原样输出
//编程测试了一下
#include<iostream>
#include<cctype>
using namespace std;
void main(){
char s[4] = { 'A', 'B', 'b', 'A'};
char s1[4] = { 0 };
for (int i = 0; i < 4; i++){
s1[i] = tolower(s[i]);
cout << s1[i] << endl;
}
getchar();
}
输出结果为:
a
b
b
a
可以实现的样子。
范围for:for(定义一个变量,访问序列中基础元素 : 表示一个序列)
decltype :返回操作数的数据类型
//输出标点个数
string s = "hi,i am reimu!!";
int count = 0;
for (auto a:s) //变量a会迭代访问s的每个元素,每次迭代后a会被初始化为s的下一个元素
if (ispunct(a))
++count;
cout << count << endl;
getchar();