字符串处理

C++ : string字符串

运算符特性

----支持比较运算符(>,>=,<,<=,==,!=)。支持stringC-string的比较(如 str < "hello")。

在使用>,>=,<,<=这些操作符的时候是根据“当前字符特性”将字符按 字典顺序 进行逐一得 比较。

字典排序靠前的字符小, 比较的顺序是从前向后比较,遇到不相等的字符就按这个位置上的两个字符的比较结果确定两个字符串的大小(前面减后面)。

----支持+运算符,代表拼接字符串:string字符串可以拼接,通过”+”运算符进行拼接。

1
2
3
4
5
6
string s1 = "123";
string s2 = "456";
string s = s1 + s2;
cout << s; //123456

效率上: s1 += s2 相当于 append()/push_back() 快于 s1 + s2

插入

代码 含义
s.push_back() 在末尾插入
s.insert(pos,element) 在pos位置插入element
s.append(str) 在s字符串结尾添加str字符串

删除

代码 含义
erase(it p) 删除迭代器p所指的字符
erase(it1 it2) 删除迭代器区间[first,last)
erase(pos, n) 删除从pos开始n个字符

替换

代码 含义
s.replace(pos,n,str) 把当前字符串从索引pos开始的n个字符替换为str
s.replace(pos,n,n1,c) 把当前字符串从索引pos开始的n个字符替换为n1个字符c
s.replace(it1,it2,str) 把当前字符串[it1,it2)区间替换为str

子串

代码 含义
s.substr(pos,n) 从pos索引开始的n个字符
s.substr(pos) 从pos开始到末尾

用 s = substr(n) 来删除前n个字符

查找

代码 含义
s.find (str, pos) 从pos开始(默认0),查找子串str,返回找到的字符串的首字符位置
s.find (c, pos) 从pos开始(默认0),查找字符c,返回找到字符位置
s.rfind (str, pos) 从pos开始,反向找子串s
s.rfind (c, pos) 从pos开始,反向找字符c

若找不到,返回值为string::npos,不是-1

Char字符

判断字母/数字/大小写

1
2
3
4
5
isalpha( char c ) //判断字符c是否是字母,如果是返回true(非0值),反之返回false;
isdigit( char c ) //判断字符c是否是数字,如果是返回true(非0值),反之返回false;
isalnum( char c ) //判断字符c是否是字母或数字,如果是返回true(非0值),反之返回false;
islower( char c ) //判断字符c是否是小写字母,如果是返回true(非0值),反之返回false;
isupper( char c ) //判断字符c是否是大写字母,如果是返回true(非0值),反之返回false;

大小写转换

1
2
tolower( char c ) //将字符c转换的小写字母,如果字符c无法转换为小写字母,返回字符c;
toupper( char c ) //将字符c转换的大写字母,如果字符c无法转换为大写字母,返回字符c;

C++11: to_string

to_string 是 C++11 中引入的一个标准库函数。

用于将数值类型转换为字符串。它的作用是将整数、浮点数等数值类型转换成对应的字符串表示形式。

to_string可以将int/long long/double等常用类型,转换为string类型

对于浮点数,to_string 默认会转换为保留小数点后六位的字符串表示。

1
2
3
4
5
int num = 123;
int neg = -66;
double f = 3.14;
string s = to_string(num) + " : " + to_string(neg) + " : " + to_string(f);
//123 : -66 : 3.140000

C++11: stoi/stoll/stod

stoistod 是 C++ 11 标准库中的两个函数,用于将字符串转换为整数或浮点数。

stoi/stoll/stod/报错的可能原因:

输入字符串包含非法字符,不是合法的整数/浮点数类型。

输入字符串为空

输入字符串超出了对应类型的表示范围,导致溢出

1
2
3
4
string s1 = "2.33";
string s2 = "-1000";
cout<<stod(s1) + stoi(s2);
//-997.67

字符串处理
https://czwcugb.github.io/算法/字符串/字符串处理/
作者
ChenZhiwei
发布于
2025年1月13日
许可协议