我们经常需要单独处理string对象中的字符,例如:
检查一个string对象是否包含空白;
把string对象中的字符进行大小写替换;
检查某个特定字符是否出现;
。。。。。
上述问题我们可以使用范围for循环(C++11)对string对象进行遍历,例如:
string a{"hello"};
for(auto temp:a)
操作。。。。
使用相应字符处理函数进行相关操作,常用如下:
注:c表示字符变量 char
isalnum(c);// 当c是字母或数字时返回true;
isalpha(c); // 当c是字母时为true;
isdigit(c);//当c是数字时为true;
islower(c); // 当c是小写字母;
isupper(c);//当c是大写字母
isspace(c);//当c是空格,横向制表符,纵向制表符,回车符,换行符,进纸符的一种)
水平制表符就是水平空出几个格,说像一下打了几个空格一样。编程里面用“\t”表示。 垂直制表符就是垂直空出几个格,说像一下打了几个回车一样。编程里面用“\v”表示。
tolower(c);如果c是大写字母,输出对应的小写字母;否则原样输出c
toupper(c);如果c是小写字母,输出对应的大写字母;否则原样输出c
示例小程序
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
string str;
cin >> str;
char val;
cin >> val;
int nums;
if(isalpha(val)){
val = tolower(val); //与下面val = toupper(val)一起实现不区分大小写功能
nums = count(str.begin(),str.end(),val);
val = toupper(val);
nums = nums + count(str.begin(),str.end(),val);
}
cout << nums;
return 0;
}