C++字符串知识杂记
注意,本文章所有内容都是在mac OS中用终端编译过了的,但并不一定适合其他系统及编译器。
size()函数
首先size()函数应用于字符串中字符数的获取,所以头文件中肯定是要调用string库的,同理,其他string库的成员函数也都要调用库,如后面的clear()、insert()等函数。
具体用法如下所示:
string ans="surfingcitizen";
cout<<ans.size()<<endl;
输出结果:14
替换字符串中的字符操作
直接上示例:
#include<iostream>
#include<string>
using namespace std;
int main(void)
{
string tool="surfingcitizen";
tool[0]='o';
tool[1]='i';
cout<<tool<<endl;
return 0;
}
输出结果:oirfingcitizen
empty()函数
用于判断字符串是否为空字符串。
示例:
string tool="surfingcitizen";
cout<<boolalpha<<tool.empty()<<endl;
输出结果:false
clear()函数
用于清空字符串,直接上示例:
string tool="surfingcitizen";
cout<<boolalpha<<tool.empty()<<endl;
tool.clear();
cout<<boolalpha<<tool.empty()<<endl;
输出结果:
false
true
字符串末尾添加字符/字符串
不bb,直接上代码:
string tool="乌兹";
tool+="永";
tool+="远";
tool+="滴神";
cout<<tool<<endl;
输出结果:乌兹永远滴神
insert()函数
用于字符串中字符的插入,如示例:
string tool="srfg";
tool.insert(1,"u"); //surfg
tool.insert(4,"in");
cout<<tool<<endl;
输出结果:surfing
erase()函数
erase(a,b)用于删除字符串中从第a+1个字符开始的b个字符。
string tool="suuuurafing";
tool.erase(2,3); //surafing
tool.erase(3,1);
cout<<tool<<endl;
输出结果:surfing
replace()函数
用于替换字符或者字符串,用法如下:
string amt="abcdqm";
amt.replace(4,2,"efg");//从第4+1个字符开始的2个字符替换成“”中内容
cout<<amt<<endl;
输出结果:abcdefg
字符串比较
使用等于号==和不等于号!=来判断字符串是否相等,如:
string amt="abcdqm";
string abc="faifhaif";
cout<<boolalpha<<(amt==abc)<<endl;
输出结果:false
substr()函数
用于获取子字符串。但是string库中的substr()函数使用时会复制一个新的字符串,导致占用更多的内存空间,如果使用string_view中的substr()函数则不会有这类问题,因为string_view是仅用于查看字符串,而string则是修改和查看字符串。
关于substr()用法如下:
string amt="abcdefg";
cout<<amt.substr(2,3)<<endl;//从第2+1个字符开始的3个字符
输出结果:cde
查找/字符转换
查找即查找字符串中指定字符或字符串的位置,并返回其在字符串中的位置,对应函数有find()、rfind()、find_first_of()、find_last_of()、find_first_not_of()、find_last_not_of()等,如果没找到则返回npos(需要先声明boolalpha)。
string amt="abcorzqaqtql";
cout<<amt.find('a',2)<<endl;//查找从第3个字符开始第一个出现a的位置
cout<<amt.find_last_of("qac")<<endl;//从后往前查找第一个q/a/c出现的位置
cout<<boolalpha<<(amt.find('m')==u32string::npos)<<endl;
输出结果:
7
10
true
关于数值转换,有函数stoi()、stol()、stoll()、stoul()、stoull()、stof()、stod()、stold()可以将字符串形式的数字转换成数值形式的数字,这里不再举例说明(懒狗