string

string

string 和 char s[ ] 的区别

  • 字符数组本质还是数组,因此长度固定;string 可以理解为长度不限的字符串
  • 字符数组的系统定义的函数过少,导致操作不万便:string集成大量的系统函数,方便操作
  • 字符数组由于本质是数组,因此不能进行比较运算以及 运算;string可以直接做比较

string 的读入和遍历

getline(cin,s) 读入一个字符串(直到换行),可以含空格
cin 读入一个字符串,不能含空格
s.size() 求字符串s的长度
s[下标i] 获取字符串的某个下标对应

string “+” 用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 字符串拼接
string s1;
s1 = "hello ";
s1 = s1 + "world!";
// hello world!
cout << s2 << endl;

// 字符串累加字符
string s2;
s2 = s2 + 'h';
s2 = s2 + 'i';
// hi
cout << s2 << endl;

// 常见错误
string s3;
s3[0] = 'h';
s3[1] = 'i';
// 输出为空,s3是一个长度为0的字符串,不能访问下标0和下标1,数组下标越界了
cout << s3 << endl;

string 比较

1
2
3
4
string s1 = "zhang";
string s2 = "wang";
// s1 > s2 z的ascii码值比w的大
// 逐项通过比较ascii码值决定大小关系

string 函数

函数 描述
find(子串substr) 返回子字符串第一次出现的下标,没有则返回-1
find(substr,x) 从下标 x 开始查找子字符串,返回第一次出现的下标,没有则返回-1
substr(开始下标i,子串长度len) 从下标 i 截取 len 长的子字符串
substr(开始下标i) 从下标 i 开始截取子字符串到最后
earse(开始下标i,长度len) 删除从下标 i 开始 len 个字符
earse(开始下标i) 删除从下标i开始后面所有的字符
insert(插入下标i,插入字符串s) 从下标 i 插入字符串s
replace(开始下标i,长度len,替换字符str) 从下标 i 开始替换 len 个字符为 str