【C++】string详解

【C++】string详解

我们再使用再对字符串操作的时候,可以调用string中的函数实现一些功能,string的头文件是

#include<string>

string类是一个模板类,位于名字空间std中,所以还需要

using namespace std;
字符串构造函数
  • string str; // 构造空的string类对象str

  • string str(“abc”); //使用字符串”abc“构造对象

  • string str(10, ‘h’); // 10个a组成字符串构造对象

  • string str(s); //对s拷贝构造出str

  • string str(“abc”,strlen); //将”abc“的strlen个字节存入str中

  • string str(“abc”,sd,strlen); //从”abc“的sd位置开始,存储strlen个字节到str中

清空字符串assign()函数
  • str.assign(“abc”); //清空字符串,并设置为 “abc”
  • str.assign(“abc”,2); //清空字符串,将str设置为“ab”
  • str.assign(“abc”,1,1); //清空字符串,将str设为”abc“从第一个位置开始截取的第一个字节a
  • str.assign(5,‘h’); //清空字符串,将字符串设为5个’h‘
插入inster()函数
  • str.insert(2,3,‘a’); //在str下标为2的位置添加 3个 字符’a’
  • str.insert(2,“abc”); //在str下标为2的位置添加 字符串 “abc”
  • str.insert(2,“abc”,1); //在str下标为2的位置添加 字符串 “abc” 中 第一个字符a
  • str.insert(2,“ABC”,1,1); //在str下标为2的位置添加 字符串 “ABC” 中从第一个位置开始的 第一个字符
查找find()函数:从头部查找
  • str.find(‘a’); //查找 ‘a’
  • str.find(“abc”); //查找 “abc”
  • int n=str.find(“abc”); //在str中查找”abc“,若查找到返回字符串第一个元素位置
  • str.find(‘a’,1); //从第一个位置开始,查找’a’
  • str.find(“abc”,1,2); //从从第一个位置开始,开始查找 “abc”的前 2个 字符
查找rfind()函数:从尾部查找
  • str.rfind(‘a’); //查找 ‘a’
  • str.rfind(“abc”); //查找 “abc”
  • int n=s4.rfind(“abc”); //查找到”abc“,返回字符串第一个元素的位置
  • str.rfind(‘abc’,1); //从末尾开始,向前查找’B’
  • str.rfind(“abc”,1,2); //从末尾开始,开始向前查找 ‘ABC’ 的前 2个 字符
find_first_of()函数

查找是否包含有子串中任何一个字符

  • str.find_first_of(“abBc”);//查找 “abBc” 和str 相等的任何字符,“abBc” 中有就返回位置
  • str.find_first_of(“abBc”,1);//查找 “abBc” 和str 相等的任何字符,从 位置1 处,开始查找"abBc" 中的字符,“abBc” 中有的就返回位置
  • str.find_first_of(“abBc”,1,2);//查找 “abBc” 和str 相等的任何字符,从 位置1 处,开始查找"abBc" 的前 2个 字符,“abBc” 中有的就返回位置
find_last_of()函数:
  • find_first_not_of ()末尾查找, 从末尾处开始,向前查找是否包含有子串中任何一个字符
  • str.find_last_of(“abBc”)——查找 “abBc” 和str 相等的任何字符,向前查找,“abBc” 中有的返回位置
  • str.find_last_of(“abBc”,1)——查找 “abBc” 和str 相等的任何字符,从 位置1 处,开始向前查找"abBc" 中的字符,“abBc” 中有的就返回位置
  • str.find_last_of(“abBc”,10,2)——查找 “abBc” 和str 相等的任何字符,从 位置10 处,开始向前查找"abBc" 的前 2个 字符,“abBc” 中有的就返回位置
比较compare()函数

完全相等返回0;完全不等返回;部分相等返回大于0

示例对象:string str(“abcd”)

  • str.compare(“abcd”);//完全相等,返回0
  • str.compare(“dcba”);//小于,返回一个小于0的值
  • str.compare(“ab”);//大于,返回大于0的值
  • str.compare(str);//相等
  • str.compare(0,2,str,2,2);//用str的 下标0 开始的 2个字符 和 str的 下标2 开始的 2个 字符比较——就是用 “ab” 和 “cd”” 比较,结果小于零
  • str.compare(1,2,”bcx”,2);//用str的 下标1 开始的 2个字符 和 "bcx"的 前 2个 字符比较——就是用 “bc” 和 “bc”” 比较,结果是零
拷贝函数
  • str.substr(2);//提取子串,提取出 str 的 下标为2 到末尾
  • str.substr(2,3);//提取子串,提取出 str 的 下标为2 开始,提取三个字节
  • str.data();//将string类转为字符串数组
  • str.copy(s,count,pos);//将 str 里的 pos 位置开始,拷贝 count个 字符,存到 s (数组)里
删除函数
  • str.erase(2);//删除 下标2 的位置开始,之后的全删除
  • str.erase(2,1);//删除 下标2 的位置开始,之后的 1个 删除
  • str.clear();//删除 str 所有
  • str.replace(2,4,“abcd”);//从 下标2 的位置,替换 4个字节 ,为"abcd"
字符串操作函数
  • str.size() ;//返回字符串有效字符长度

  • str.length() ;//返回字符串有效字符长度

  • str.capacity() ;//返回空间总大小

  • str.empty() ;//检测字符串释放为空串,是返回true,否则返回false

  • str.swap(str1);//交换 str1和 str 的字符串

  • str.resize( n, c );//将有效字符的个数该成n个,多出的空间用字符c填充,既扩容又改变了size值

  • str.resize ( n );//将有效字符的个数改成n个,多出的空间用0填充

  • str.reserve(n);//设置str的容量 n,不会填充数据

访问函数
  • str[] ( pos );//返回pos位置的字符

  • str.at(i);//返回字符,其是个函数

str.at(i) 实质上是一个函数operator[].at()的区别在于:

  • at: 出现错误会抛出异常。如果出现越界,会抛异常处理。
  • []:出现错误命中断言。如果下标i访问的不是在合理的size范围中(比如越界),会报错。
追加字符函数
  • str.push_back©;//在字符串后尾插字符c
  • str.append (s);//在字符串后追加一个字符串
  • str+=(str);//在字符串后追加字符(串)str

注:一般使用+=比较多,既可以加字符也可以加字符串

  • str.substr(a,a-c);//从a位置开始截取a-c个单位长度字符串返回
反转相关函数

(位于头文件< algorethm >)

  • reverse(str.begin(),str.end());//str的开始 到 结束字符反转

  • reverse(s4.begin,s4.end); //将str整体从头到底反转

参考:https://blog.csdn.net/qq_42659468/article/details/90381985?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

https://blog.csdn.net/qq_42351880/article/details/90635883?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

  • 17
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 C++ 中,string 是一个类,可以用来存储和操作字符串。使用 string 类型需要包含头文件 <string>。 string 类型的特点如下: 1. 可以动态改变字符串的长度。 2. 支持下标访问、迭代器操作和常用的字符串操作函数(如 find、substr 等)。 3. 可以与 C 语言的字符串(即以 '\0' 结尾的字符数组)进行互相转换。 下面是一些常用的 string 类型操作: 1. 初始化字符串: ```cpp string str1 = "hello"; // 直接用字符串初始化 string str2("world"); // 用字符数组初始化 string str3(5, 'a'); // 用字符和长度初始化 ``` 2. 获取字符串长度: ```cpp int len = str.length(); // 获取字符串长度 ``` 3. 字符串拼接: ```cpp string str4 = str1 + str2; // 直接使用加号拼接字符串 str1 += str2; // 使用加等于号拼接字符串 ``` 4. 字符串查找: ```cpp int pos = str.find("world"); // 查找子串,返回第一次出现的位置 ``` 5. 字符串截取: ```cpp string substr = str.substr(pos, len); // 截取子串,从 pos 开始,长度为 len ``` 6. 字符串转换为字符数组: ```cpp const char* cstr = str.c_str(); // 获取指向字符数组的指针 ``` 7. 字符数组转换为字符串: ```cpp string str5 = "hello"; const char* cstr2 = "world"; string str6 = str5 + cstr2; // 直接使用加号拼接字符串和字符数组 string str7(cstr2); // 使用字符数组初始化 ``` 以上是 string 类型的一些常用操作,具体用法还需要根据实际情况进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值