摘要
C++入门 bool、引用 string类的增删改查
3.bool和引用
3.1 bool类型
只有true
和false
两个值,所有非零值为true
,零值为false
,与python的区别是它的字母是全小写
3.2 引用
C++中使用&
作为引用符,区别于取址算符 1 2 3
| int a; int &ra = a;//定义引用ra,它是变量a的引用,即别名 //此时 ra = 1; 等效于 a = 1;
|
在函数中使用引用可以直接对原值进行更改 1 2 3 4 5 6 7
| void fun(int &a){ a = 1; } int main(){ int num = 0; fun(num);//num变为1 }
|
4.string类
4.1 简介
C中处理字符串通常使用char
数组,而string类通过cin
和cout
实现输入输出,并支持许多算法。使用方法
1 2 3 4 5 6 7 8 9 10
| #include <string>
string s = "hello world";//直接初始化 string s1 = s; //使用另一个string初始化 string s2 = s1 + s; //两个string拼接 string s3(4, 'c'); //使用n个字符初始化 string s4("hello", 2); //将字符串的前n个字符赋值给s4 string s5(s2, 2, 2); //将s2从pos位置开始的len长度字符串赋值给s5 string s6(s2, 2); //将s2从pos位置开始的子串赋值给s6 string s7(s2.begin(), s2.end()); //将s2某个区间的子串赋值给s7
|
4.2 增
- 使用
cin
输入
- 使用
.resize()
实现scanf
输入
1 2 3
| string s; s.resize(100); scanf("%s",&s[0]);
|
- 使用
getline()
获得一行字符串(包括空格)
- 使用
.insert()
插入字符
1 2 3
| s1.insert(pos, "hello"); //从pos位置起,插入字符串 s2.insert(pos, n, 'c'); //从pos位置开始,增加n个字符 s2.insert(pos, s1, pos2, len); //从pos位置起,插入s1的从pos2开始的len长度字符串
|
注意pos和len都是整数类型的,下标从0开始
- 使用
to_string()
函数将其他类型转为string
1 2 3
| int num = 123; string s; s = to_string(num);
|
4.3 删
- 使用
.erase()
清除字符
1 2
| s.erase(pos, len); //删除从pos位置开始的n个字符 s.erase(s.begin(), s.begin()+2); //删除某个指定区间的元素
|
- 使用
.clear()
清空字符串
4.4 改
- 使用
.replace()
替换字符
1 2 3
| s.replace(s.begin(), s.end(), "hello"); //替换指定区间内的字符 s4.replace(pos, len, "hello"); //替换从pos位置开始的len长度的字符串
|
- 使用
transform()
改变字符串(如大小写)
1 2 3 4
| #include <algorithm>
transform(s3.begin(), s3.end(), s3.begin(), ::tolower);//改为小写 transform(s3.begin(), s3.end(), s3.begin(), ::toupper);//改为大写
|
4.5 查
- 使用
cout
查看
- 使用
.c_str()
实现printf
输出
1
| printf("%s\n",s.c_str());
|
- 使用
.length()
/ .size()
获取长度
- 使用
.substr()
获取子串/实现切片
1 2
| s2 = s.substr(pos); //从下标pos开始到末尾 s3 = s.substr(pos,len); //下标pos开始截取len个字符
|
- 使用
.find()
获取字符或字符串位置
返回int类型
- 直接使用下标参看字符串对应字符
- 比较两个字符串
1 2 3
| s.compare(s2); s.compare(pos,n1,s2); //让s中从pos下标位置开始的n1个字符与s2做比较 s.compare(pos1,n1,s2,pos2,n2); //让s中从pos1下标位置开始的n1个字符与s2中从pos2开始的n2个字符相比较
|
按acsii码排序,>时返回1,<时返回-1,==时返回0
区分大小写,小写字母>大写字母>数字
- 使用
.empty()
判断是否为空
空字符串返回1,非空返回0。
如字符串.resize()
过,即为非空