• C++ string类的常用接口类型的使用


    目录

    一、string类对象的常见构造

    二、string类对象的容量操作

    (1)size / clear / resize

    (2) reserve 

    三、string类对象的访问及遍历操作

    (1)operator[ ]​编辑

    (2)三种遍历方式

    (3)迭代器的其他用法

    四、string类对象的修改操作

    五、string类的非成员函数


    在使用string类时,必须包含#include头文件以及using namespace std;

    <1>string 是表示字符串的字符串类;

    <2>该类的接口与常规容器的接口基本相同,再添加一些专门用来操作string的常规操作;

    <3>string在底层实际是:basic_string模板类的别名,

          typedef basic_string string;

    <4>不能操作多字节或者变长字符的序列。

    一、string类对象的常见构造

    string ();    构造空的string类对象,即空字符串

    string (const char* s);    用c_string 来构造string类对象

    string (const string& s);  拷贝构造函数

    string (size_t n, char c) ;   string类对象中包含n个字符c

    二、string类对象的容量操作

    size :   返回字符串有效字符长度

    length:返回字符串有效字符串

    capacity: 返回空间大小

    empty: 检查字符串是否为空串,是返回turn,否返回flase

    clear: 清空有效字符

    reserve:为字符串预留空间

    resize:将有效字符的个数改成n个,多出的空间用字符c填充

    (1)size / clear / resize

    string类对象支持直接用cin和cout进行输入和输出

     注:将s中字符串清空,注意清空时只是将size清0,不改变底层空间的大小。

    只会改变size的大小,不会改变capacity的大小。

    resize开空间并初始化。

    (2) reserve 

    开空间但不初始化

    构建vector时,如果提前已经知道string中大概要放多少个元素,可以提前将string中空间设置好

    注:

    (1)size()和 length()方法底层实现原理完全相同,引入size()的原因是为了与其他容器的接口保持一致,一般情况下基本都是用size();

    (2) clear()只是将string中有效字符清空,不改变底层空间大小;

    (3)resize(size_t n) 与 resize(size_t n,char c) 都是将字符串中有效字符改变到n个,不同的是当字符个数增多时,resize(size_t n)用0来填充多出的元素的空间,resize(size_t n , char c)用字符c来填充多出的元素空间。注意:resize在改变元素个数时,如果是将元素个数增多,可能会改变底层容量的大小,如果是将元素个数减少,底层空间总大小不变。

    (4)reserve(size_t n=0):为string预留空间,不改变有效元素个数,当reserve的参数小于string的底层空间总大小时,reserve不会改变容量大小。

    三、string类对象的访问及遍历操作

    operator[ ] :返回pos位置的字符,const string类对象调用

    begin+end :begin获取一个字符的迭代器 + end获取最后一个字符下一个位置的迭代器

    rbegin+rend:rbegin获取最后一个字符的迭代器 + rend获取字符串第一个字符之前的位置的迭代器

    范围for:C++支持更简洁的范围for的新遍历方式

    (1)operator[ ] 

    不会抛异常,只会断言;at会抛异常

     

    (2)三种遍历方式

    迭代器想象成像指针一样的东西。 

     范围for底层实际是迭代器:

    (3)迭代器的其他用法

     

    四、string类对象的修改操作

    push_back :在字符串后尾插字符c

    append :在字符串后面追加一个字符串

    operator+= :在字符串后追加字符串str

    c_str :返回C格式字符串

    find + npos :从字符串pos位置开始往后找字符c,返回该字符在字符串中的位置

    rfind : 从字符串pos位置开始往前找字符c,返回该字符在字符串中的位置

    substr : 在str中从pos位置开始,截取n个字符,然后将其返回

    注意:

    (1)在string尾部追加字符时,s.push_back(c) / s.append(1,c) / s+='c' 三种实现方法差不多,一般情况下string类的+=操作 用的比较多,+= 操作不仅可以连接单个字符,还可以连接字符串。

    (2)对string操作时,如果能够大概预估到多少字符,可先通过reserve把空间预留好。

    (3)插入(拼接)方式:push_back  append  operator

    (4)正向和反向查找:find()    rfind()

    (5)截取子串:substr()

    (6)删除:erase

     

    len > 后面的字符长度,有多少拷贝多少,拷贝到结尾

    缺省参数npos是整型最大值,一定大于后面的长度,不传第三个参数默认拷贝结尾。 

      

    五、string类的非成员函数

    operator[ ] :返回pos位置的字符,const string类对象调用;

    begin + end : begin获取一个字符的迭代器 + end获取最后一个字符下一个位置的迭代器;

    rbegin + rend :rbegin获取最后一个字符的迭代器 + rend获取第一个字符的前一个位置的迭代器;

    范围for :C++11支持更简洁的范围for的新遍历方式;

     

      

    如若对你有帮助,记得点赞、收藏、关注哦!

    若有误,望各位,在评论区留言或者私信我 指点迷津!!!谢谢^ ^ ~

  • 相关阅读:
    Json的使用,以及@JsonProperty和@JSONFiled注解的混淆
    独立app开发和运行(使用篇)
    浅谈如何学习微信小程序
    react 手写树形渲染组件
    uwsgi的一些课外知识:uwsgi、uWSGI、WSGI、web服务器、应用服务器、socket
    护照识别易语言代码
    【图像处理:OpenCV-Python基础操作】
    【23种设计模式】装饰模式(九)
    golang channel 学习笔记
    Linux 下搭建 Hadoop 环境
  • 原文地址:https://blog.csdn.net/lufeixueya/article/details/140355074