C++ STL 之 string 类型

概述

要使用 string 类,必须包含头文件 。string 类包含了 6 个构造函数。string 类支持 cin 方式和 getline() 方式两种输入方式。简单示例如下:

string stuff;
cin >> stuff;
getline(cin, stuff);

第一行是声明 string 类的对象 stuff,第二行是从屏幕读入输入的字符串,第三行同样实现第二行代码的功能。

string 类提供的各种操作函数大致分为八类:构造器和析构器、大小和容量、元素存取、字 符串比较、字符串修改、字符串接合、I/O 操作以及搜索和查找。

下表列出了 string 类的所有成员函数及它们的功能:

表 1 string 类的所有成员函数
函数名称 功能
构造函数 产生或复制字符串
析构函数 销毁字符串
=,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() 返回配置器

构造函数和析构函数

  1. 构造函数,常见的 string 类构造函数有以下几种形式:
string strs //生成空字符串
string s(str) //生成字符串str的复制品
string s(str, stridx) //将字符串str中前stridx个元素作为构造函数的初值
string s(str, strbegin, strlen) //将字符串str中始于strbegin、长度为strlen的部分作为字符串初值
string s(num, c) //生成一个字符串,包含num个c字符

如果字符串只包含一个字符,使用构造函数对其初始化时,使用以下两种形式比较合理:

std::string s('x');    //错误
std::string s(1, 'x');    //正确

或者:

  std::string s("x");    //正确

即一个字符也应视为字符串。

  1. 析构函数:
~string() //销毁所有内存,释放内存

获取字符串长度

共4个函数:size() 和 length()、 maxsize() 和 capacity()

  1. size() 和 length(): 返回 string 类型对象中的字符个数,且它们的执行效果相同。
  2. maxsize(): 返回 string 类型对象最多包含的字符数。
  3. capacity(): 返回在重新分配内存之前,string 类型对象所能包含的最大字符数。
  4. reserve() 可以为 string 类型对象重新分配内存,重新分配的大小由其参数决定,默认参数为 0.

获取字符串元素

两种方法:下标操作符[] 和 成员函数at(),第 1 个字符索引(下标)为 0,最后的字符索引为 length()-1。
5. 下标操作符 []在使用时不检查索引的有效性,如果下标超出字符的长度范围,会导致未定义行为。
6. 函数 at() 在使用时会检查下标是否有效。如果给定的下标超出字符的长度范围,系统会抛出 out_of_range 异常。

字符串比较

  1. >、<、==、>=、<=、!=
    对于参加比较的两个字符串,任一个字符串均不能为 NULL,否则程序会异常退出。
  2. compare():返回一个整数来表示比较结果。如果相比较的两个子串相同,compare() 函数返回 0,否则返回非零值。string 类的比较 compare() 函数使用非常方便,而且能区分字母的大小写。建议读者多使用此函数。

字符串修改和替换

assign(),=,erase(),swap(),insert(), append() 函数。

符串输入输出操作

“<<” 和 “>>” ,getline() 函数

字符串查找

find()、 rfind()、find_first_of()、 find_last_of()、find_first_not_of()、 find_last_not_of()函数。

find_first_of() 函数可实现在源串中搜索某字符串的功能,该函数的返回值是被搜索字符串的第 1 个字符第 1 次出现的下标(位置)。若查找失败,则返回 npos。

find_last_of() 函数同样可实现在源串中搜索某字符串的功能。与 find_first_of() 函数所不同的是,该函数的返回值是被搜索字符串的最后 1 个字符的下标(位置)。若查找失败,则返回 npos。

find_first_not_of() 函数可实现在源字符串中搜索与指定字符(串)不相等的第 1 个字符;

find_last_not_of() 函数可实现在源字符串中搜索与指定字符(串)不相等的最后 1 个字符。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值