• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2020-04-16 22:31 Aet 隐藏边栏 |   抢沙发  6 
文章评分 3 次,平均分 5.0

关于

  • #include <string> //C++
  • #include <string.h> //C
  • using namespaces std;

声明

  • string str;
    • 调用string的默认构造函数,str被初始化为空串

构造

  • string s(str);
    • 拷贝构造函数 生成str的复制品
  • string s(str,stridx);
    • 将字符串str内“始于位置stridx”的部分当作字符串的初值
  • string s(str,stridx,strlen);
    • 将字符串str内“始于stridx且长度顶多strlen”的部分作为字符串的初值
  • string s(cstr);
    • 将C字符串作为s的初值
  • string s(chars,chars_length);
    • 将C字符串前chars_len个字符作为字符串s的初值
  • string s(num,c);
    • 生成一个字符串,包含num个c字符
  • string s(begin,end);
    • 以区间[begin,end)(不包含end)内的字符作为字符串s的初值
  • s.~string()
    • 销毁所有字符,释放内存

操作

assign

  • 赋以新值

swap

  • 交换两个字符串的内容

+=,append,push_back

  • 在尾部添加字符

insert

  • 插入字符

erase

  • 删除字符

clear

  • 删除全部字符

replace

  • 替换字符

+

  • 串联字符串

==,!=,<,<=,>,>=,compare

  • 比较字符串

size,length

  • 返回字符数量

max_size

  • 返回字符的可能最大个数

empty

  • 判断字符串是否为空

capacity

  • 返回重新分配之前的字符容量

reserve

  • 保留一定量内存以容纳一定数量的字符

[],at

  • 存取单一字符

>>,getline

  • 从stream读取某值

<<

  • 写入stream

copy

  • 将某值赋值为一个C_string

c_str

  • 将内容以C_string返回

data

  • 将内容以字符数组形式返回

substr

  • 返回某个子字符串

find,rfind,find_first_of,find_last_of,find_first_not_of,find_last_not_of

  • 返回定位字符所在位置

begin,end

  • 提供类似STL的迭代器支持

rbegin,rend

  • 逆行迭代器

get_allocator

  • 返回配置器

详解

C++字符串和C字符串的转换

C++提供的由C++字符串得到对应的C_string的方法是使用data()c_str()copy()
data()以字符数组的形式返回字符串内容,但并不添加’\0’
c_str()返回一个以‘\0’结尾的字符数组。

copy()则把字符串的内容复制或写入既有的c_string或字符数组内。

C++字符串并不以’\0’结尾。

大小和容量函数

  • 现有的字符数,函数是size()length(),他们等效。
  • max_size() 这个大小是指当前C++字符串最多能包含的字符数,很可能和机器本身的限制或者字符串所在位置连续内存的大小有关系。
  • capacity()重新分配内存之前 string所能包含的最大字符数。
  • reserve()函数,这个函数为string重新分配内存。重新分配的大小由其参数决定,默认参数为0,这时候会对string进行非强制性缩减。

元素存取

操作符[]并不检查索引是否有效(有效索引0~str.length()),如果索引失效,会引起未定义的行为。

at()会检查,如果使用at()的时候索引无效,会抛出out_of_range异常。

例外:

const string a;的操作符[]对索引值是a.length()仍然有效,其返回值是’\0’

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0 最后编辑于:2021-11-20
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享