1. 常用ASCII值
‘A’- ‘Z’是65 ~ 90,’a’ - ‘z’是97 - 122,0 - 9是 48 - 57。
故字符可以参与运算,运算时会将其当做整数
使用isdigit(ch)
判断字符是否为数字字符。
使用isalpha(ch)
判断字符是否为字母字符。
1.1 tolower
和toupper
函数
2. 字符数组
2.1 初始化
字符串就是字符数组加上结束符’\0’。
可以使用字符串来初始化字符数组,每个字符串结尾会暗含一个’\0’字符,因此字符数组的长度至少要比字符串的长度多 1
char a1[] = {'C', '+', '+'}; // 没有空字符
char a2[] = {'C', '+', '+', '\0'}; // 含有显示的空字符
char a3[] = "C++"; // 自动添加表示字符串结尾的空字符
char a4[6] = "Daniel"; // 错误:没有空间可以存放空字符
2.2 输入输出
char str[100];
cin >> str; // 遇到空格或者回车就会停止
scanf("%s", str); // 遇到空格或者回车就会停止
fgets(str, 100, stdin); // 遇到回车就会停止,但字符串保留回车字符
cout << str << endl; // 输出字符串时,遇到空格或者回车不会停止,遇到'\0'时停止
printf("%s\n", str); // 输出字符串时,遇到空格或者回车不会停止,遇到'\0'时停止
2.3 常用操作
需要引入头文件:#include <string.h>
(1) strlen(str)
:求字符串的长度
(2) strcmp(a, b)
:比较两个字符串的大小,a < b返回-1,a == b返回0
(3) strcpy(a, b)
,将字符串b复制给a。
3.字符串
需要引入头文件:#include <string>
3.1 初始化
string s1; // 默认初始化,是一个空字符串
string s2 = s1; // s2与s1的值相同,并不指向同一段地址
string s3 = "hiya";
string s4(n, 'c'); // s4的内容是 "cccccc..."(n个)
3.2 输入输出
string s;
cin >> s;
getline(cin, s); // 输入
getline(cin, s, ',') // 输入截止符号自定义
cout << s << endl;
printf(“%s”, s.c_str()); //输出
3.3 常用操作
(1) string的empty
和size
操作
empty
函数用于检查字符串是否为空
size
函数用于获取字符串的长度,返回一个表示字符串长度的size_t
类型值。length
函数是 size
的同义函数,二者功能相同。
(2) string的比较
支持 >, <, >=, <=, ==, !=等所有比较操作。
(3) string对象相加
string s3 = s1+s2; // s3的内容 = s1 + s2
string s4 = s1 + ", " + s2 + '\n';
/*当把string对象和字符字面值及字符串字面值混在一条语句中使用时,必须确保每个加法运算符的两侧的运算对象至少有一个是string*/
string s5 = "hello" + ", "; // 错误:两个运算对象都不是string
string s6 = "hello" + ", " + s2; // 错误:不能把字面值直接相加,运算是从左到右进行的
(4) string每个字母的遍历
// 第一种循环方式:将string对象当成字符数组来处理
for (int i = 0; i < s.size(); i ++ )
cout << s[i] << endl;
// 第二种循环方式:使用基于范围的for语句
/*char &c : str: c 是对 str 中每个字符的引用。
任何对 c 的修改都会直接反映在 str 中,因为 c 是对 str 中字符的引用。
char c : str:c 是 str 中每个字符的副本。
任何对 c 的修改都不会影响 str,因为 c 只是一个独立的字符变量,与 str 中的字符没有关联。*/
for (char c: s) cout << c << endl;
for (char &c: s) c = 'a';
(5)s1是否为s2的子串
find():返回子串第一次开始位置
rfind():返回子串最后一次开始位置
int main()
{
string s1, s2;
cin>>s1>>s2;
// 检查s1是否包含s2
if(s1.find(s2)==-1) {
printf("包含");
}else{
printf("不包含");
}
return 0;
}