数据结构笔记(四)——串Ⅰ:string类常用函数

  1. 一般地,由n个字符构成的串记作: S = " a 0 a 1 . . . a n − 1 " S = "a_0 a_1...a_{n-1} " S="a0a1...an1",其中 0 ≤ i ≤ n 0\leq i \leq n 0in
    ·空串:长度为0,与只包含空格的串不同。
    ·子串:串中任意个连续字符组成的子序列。
    ·前缀:起始于位置0,长度为k的子串。
    ·后缀:终止于位置n-1,长度为k的子串。
    ·字符串除本身之外的所有非空子串、前缀和后缀,分别称作真子串、真前缀和真后缀。

  2. STL string 类提供的各种操作函数大致分为八类:构造器和析构器、大小和容量、元素存取、字符串比较、字符串修改、字符串接合、I/O 操作以及搜索和查找。要使用 string 类,必须包含头文件 <string>。

①构造器和析构器
·在 C++ 中确实存在一个从 const char * 到 string 的隐式型别转换,却不存在从 string 对象到 C_string 的自动型别转换。对于 string 类型的字符串,可以通过 c_str() 函数返回该 string 类对象对应的 C_string。

//常见的 string 类构造函数有以下几种形式:
string strs;//生成空字符串
string s(str);//生成字符串str的复制品
string s(str, index);//将字符串str中始于index的部分作为构造函数的初值
string s(str, strbegin, strlen);//将字符串str中始于strbegin、长度为strlen的部分作为字符串初值
string s(cstr);//以C_string类型cstr作为字符串s的初值
string s(cstr,char_len);//以C_string类型cstr的前char_len个字符串作为字符串s的初值
string s(num, c);//生成一个字符串,包含num个c字符
string s(strs, beg, end);//以区间[beg, end]内的字符作为字符串s的初值

//析构函数的形式如下:
~string();//销毁所有内存,释放内存

②大小和容量
·size() 和 length():返回 string 类型对象中的字符个数,且它们的执行效果相同。
·max_size():返回 string 类型对象最多包含的字符数。一旦程序使用长度超过 max_size() 的 string 操作,编译器会拋出 length_error 异常。
·capacity():返回在重新分配内存之前,string 类型对象所能包含的最大字符数。
·reserve() :为 string 类型对象重新分配内存;重新分配的大小由其参数决定;默认参数为 0。
·resize():更改string类对象长度。

size = str.size();
length = str.length();
maxsize = str.max_size();
capacity = str.capacity();
str.resize(num);
str.resize(num, c);

③元素存取
·下标操作符[] 和 成员函数at()。两者均返回指定的下标位置的字符。第 1 个字符索引(下标)为 0,最后的字符索引为 length()-1。
·二者区别:下标操作符 [] 在使用时不检查索引的有效性,如果下标超出字符的长度范围,会示导致未定义行为;函数 at() 在使用时会检查下标是否有效,如果给定的下标超出字符的长度范围,系统会抛出 out_of_range 异常。

tmp_1 = str[index]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值