C++ string类型理解

string类型

一、查找
string str="…";
//普通类

  1. find(" "); //返回字符串 " " 在 str 的位置;
  2. find(" ", x); //在 str[x]~str[n-x] **(x<n,下同)**范围内查找并返回字符串 " " 在 str 的位置;
  3. rfind(" ", x); //在 str[0]~str[x] 范围内查找并返回字符串 " " 在 str 的位置;
    //first 类
  4. find_first_of(" "); //返回 " " 中任何一个字符首次在 str 中出现的位置;
  5. find_first_of(" ", x);//返回 " " 中任何一个字符首次在 str[x]~str[n-1] 范围中出现的位置;
  6. find_first_not_of(" ");//返回除 " " 以外的任何一个字符在 str 中首次出现的位置;
  7. find_first_not_of(" ", x);//返回除 " " 以外的任何一个字符在 str[x]~str[n-1] 范围中首次出现的位置;
    //last 类
  8. find_last_of(" ");//返回 " " 中任何一个字符最后一次在 str 中出现的位置;
  9. find_last_of(" ", x);//返回 " " 中任何一个字符最后一次在 str[0]~str[x] 范围中出现的位置;
  10. find_last_not_of(" ");//返回除 " " 以外的任何一个字符在 str 中最后一次出现的位置;
  11. find_last_not_of(" ", x);//返回除 " " 以外的任何一个字符在 str[0]~str[x] 范围中最后一次出现的位置;
    以上如果没有找到相对应的字符,均返回string::npos
    例:li在这里插入图片描述
    在这里插入图片描述
    所以由上述举例我的结论有
    在普通类中:
    if(给出字符在定义的字符串中有多个)
    {返回的将是第一个出现的位置;}
    if(给一个字符串) //注:给出字符串在定义字符串中要是连续的,若不连续将返回string::npos;
    {返回给出字符串第一个字符第一次出现在定义的字符串中的位置;}
    first 、last类中按规则利用其函数就好了
    理解记忆x表示的范围:在普通类的rfind和last类里x表示{x之前包括x在内的范围}(注:x可以不小于n,不过就起不到限制的作用);在firts类里x表示{x之后包括x到定义的字符串最后一个位置的范围}(这里的x要小于n,否则就相当于在一个什么都没有的字符串里查找);find里x表示{x到n-x}(注:这里的x不一定小于n-x,只要x小于等于给出字符串第一个字符的位置就能找到给出字符串的位置)。

二、运算符重载

  1. “+”、“+=”:连接多个字符串;
  2. “=”:给字符串赋值;
  3. “<”、“<=”、“>”、“>=”:字符串的比较;
  4. “==”、“!=”:判断字符串是否相等;
    例:
    在这里插入图片描述
    说明:不建议大家 以’cd’这样的形式出现在程序中,这里只是为了说明比较也可以在字符以及字符串之间进行,不仅仅在数字之间;代码规范化,时间少一半。
    注意:使用重载的运算符 + 时,必须保证前两个操作数至少有一个为 string 类型。例如,下面的写法是不合法的:
    在这里插入图片描述在这里插入图片描述

三、子串

  1. substr(x);//返回[x]及以后的子字符串
  2. substr(x,y);//返回[x]~[x+(y-1)]的子字符串(即从[x]开始的y个连续字符组成的字符串)
    在这里插入图片描述

四、替换

  1. replace(x,y,“hello”);//返回把 [x]~[x+(y-1)] 的内容替换为 “hello” 后的新字符串
  2. replace(x, y, “abcd”, z); //返回把 [x]~[x+(y-1)] 的内容替换为 “abcd” 的前z个字符后的新字符串
    在这里插入图片描述

五、插入

  1. insert(x, “hello”); //从 [x] 位置开始添加字符串 “hello”,并返回形成的新字符串
  2. insert(x, “hello”, y); //从 [x] 位置开始添加字符串 “hello” 的前 y个字符,并返回形成的新字符串
  3. insert(x, “hello”, y, z); //从 [x] 位置开始添加字符串 “hijklmn” 的 [y]位置开始的 z 个连续字符 (包括 [y] 在内),并返回形成的新字符串
    在这里插入图片描述

六、添加
除了用重载的 “+” 操作符,还可以使用函数来完成。
append(“abc”); //在字符串末尾添加字符串"abc",并返回形成的新字符串
在这里插入图片描述

七、删除

  1. erase(x); //删除 [x] 及其以后的字符,并返回形成的新字符串
  2. erase(x, y); //删除从 [x] 开始的 y 个字符,并返回形成的新字符串
    在这里插入图片描述

八、其他

  1. size(); //返回字符串长度
  2. length(); //返回字符串长度
  3. empty(); //检查 str 是否为空,为空返回 1,否则返回 0
  4. str[n]; //存取 str 第 n + 1 个字符
  5. str.at(n); //存取 str 第 n + 1 个字符(如果溢出会抛出异常)
    在这里插入图片描述

总的来说在C++中string是一个带有字符串处理函数的类。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xuewu0zhijing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值