String
✏️ 1、成员函数
函数名称
功能
构造函数
产生或复制字符串
析构函数
销毁字符串
=,assign
赋以新值
Swap
交换两个字符串的内容
+ =,append(),push_back()
添加字符
insert ()
插入字符
erase()
删除字符
clear ()
移除全部字符
resize ()
改变字符数量
replace()
替换字符
+
串联字符串
==,! =,<,<=,>,>=,compare()
比较字符串内容
size(),length()
返回字符数量
max_size()
返回字符的最大可能个数
empty()
判断字符串是否为空
capacity()
返回重新分配之前的字符容量
reserve()
保留内存以存储一定数量的字符
[],at()
存取单一字符
>>,getline()
从 stream 中读取某值
<<
将值写入 stream
copy()
将内容复制为一个 C - string
c_str()
将内容以 C - string 形式返回
data()
将内容以字符数组形式返回
substr()
返回子字符串
find()
搜寻某子字符串或字符
begin(),end()
提供正向迭代器支持
rbegin(),rend()
提供逆向迭代器支持
get_allocator()
返回配置器
✏️ 2、创建与初始化
✏️ 3、类型转换
✏️ 4、关于split
splitC++11以前有很多原因不能提供一个通用的split,比如说需要考虑split以后的结果存储在什么类型的容器中,可以是vector、list等等包括自定义容器,很难提供一个通用的;再比如说需要split的源字符串很大的时候运算的时间可能会很长,所以这个split最好是lazy的,每次只返回一条结果。
目前发现的史上最优雅的一个实现是这样的:
但是分隔符只能是字符,为字符串时并不能有效,下面提供一种实现支持分割符是字符串的情况:
从C++11开始,标准库中提供了regex,regex用来做split:
C++17提供的string_view可以加速上面提到的第一个split实现,减少拷贝,性能有不小提升,参看此文: Speeding Up string_view String Split Implementation。
从C++20开始,标准库中提供了ranges,有专门的split view,只要写str | split(' ')就可以切分字符串,如果要将结果搜集到vector中,可以这样用:
其实C语言里面也有一个函数strtok用于char*的split,例如:
这里要注意的是strtok的第一个参数类型是char*而不是const char*,实际上strtok会改变输入的字符串。
最后更新于
这有帮助吗?