• C++ | string类的使用


    目录

    构造函数

    赋值重载

    存储 

    遍历  

    获取


    构造函数

    • string();------无参构造
    • string (const string& str);------拷贝构造
    • string (const char* s);------用字符串初始化
    • template   string  (InputIterator first, InputIterator last);------用迭代器初始化[第一个元素位置,最后一个元素的下一个位置)
    • string (size_t n, char c);------用n个相同的字符初始化

    1. // 无参构造,不能string s1()因为这样会误以为是函数声明或者函数调用
    2. string s1;
    3. // 用字符串初始化
    4. string s2("你好abcdef"); // string s2="你好abcdef";
    5. // 拷贝构造
    6. string s3(s2); // string s3=s2;
    7. // n个相同的字符初始化
    8. string s4(9,'c');
    9. // 用一段区间初始化,区间必须是左闭右开
    10. char ch[] = "123456";
    11. string s5(ch, ch + 3);
    • string (const string& str, size_t pos, size_t len = npos);------从str的pos位置开始将长度为len字符串用于初始化
    • string (const char* s, size_t n);------将字符串的前n个字符用于初始化

    1. // 用字符串初始化
    2. string s1 = "abcdef";
    3. // 从pos位置开始将长度为len的字符串用于初始化
    4. string s2(s1, 2, 3);
    5. string s3(s1, 3); // 如果不传len,默认长度为npos。如果len超出了,到s1的结尾结束
    6. // 将字符串的前5个字符用于初始化
    7. string s4("qwertyuio", 5);
    8. cout << s1 << endl;
    9. cout << s2 << endl;
    10. cout << s3 << endl;
    11. cout << s4 << endl;

    赋值重载

    • string& operator= (const string& str);------用string进行赋值
    • string& operator= (const char* s);------用字符串赋值
    • string& operator= (char c);------用某个字符赋值
      

    1. string s("wasd2468");
    2. string s1("abc");
    3. // 用string进行赋值
    4. s1 = s;
    5. cout << s1 << endl;
    6. // 用字符串赋值
    7. s1 = "xyz";
    8. cout << s1 << endl;
    9. // 用某个字符赋值
    10. s1 = 'a';
    11. cout << s1 << endl;

    • void push_back (char c);------尾插一个字符
    • string& append (const string& str);------尾插一个string类
    • string& append (const string& str, size_t subpos, size_t sublen);------尾插一个string类的子string,从subpos位置开始,长度sublen

    • string& append (const char* s);------尾插一个字符串
    • string& append (const char* s, size_t n);------尾插一个字符串的前n个字符
    • string& append (size_t n, char c);------尾插n个相同的字符
    • template   string& append (InputIterator first, InputIterator last);------尾插一段区间 

     

    • string& operator+= (const string& str);------尾插一个string类
    • string& operator+= (const char* s);------尾插一个字符串
    • string& operator+= (const char* s);------尾插一个字符 

    • string& insert (size_t pos, const string& str);------在pos位置插入一个string类
    • string& insert (size_t pos, const string& str, size_t subpos, size_t sublen);------在pos位置插入一个string子类
    • string& insert (size_t pos, const char* s);------在pos位置插入一个字符串
    • string& insert (size_t pos, const char* s, size_t n);------在pos位置插入一个字符串的前n个字符
    • string& insert (size_t pos, size_t n, char c);------在pos位置插入n个相同的字符

    • void pop_back();------尾删一个字符
    • string& erase (size_t pos = 0, size_t len = npos);------从pos位置开始,删除len个字符
    • iterator erase (iterator p);------删除迭代器p位置上的字符
    • iterator erase (iterator first, iterator last);------删除一段区间

    • size_t find (const string& str, size_t pos = 0) const;------从pos位置开始,默认从0位置开始,寻找子string类,找到了返回对应第一个字符的下标,如果没有找到返回npos
    • size_t find (const char* s, size_t pos = 0) const;------从pos位置开始,寻找子串
    • size_t find (char c, size_t pos = 0) const;------从pos位置开始,寻找对应的字符
    • size_t rfind (const string& str, size_t pos = npos) const;------从pos位置开始,反向寻找子string类
    • size_t rfind (const char* s, size_t pos = npos) const;------从pos位置开始,反向寻找对应的子串
    • size_t rfind (char c, size_t pos = npos) const;------从pos位置开始,反向寻找字符 

    • char& operator[] (size_t pos);------返回对应位置的字符引用
    • string& assign (const string& str);------为string指定一个新值,替换其当前内容
    • string& assign (const char* s);------将当前内容替换成新字符串
    • string& replace (size_t pos,  size_t len,  const string& str);------将pos位置开始,len个字符替换成新string类
    • string& replace (iterator i1, iterator i2, const string& str);------将对应的区间[i1,i2)替换成新string类
    • void swap (string& str);------和一个string类进行交换

    存储 

    • size_t size() const;------返回已存储的字符个数
    • size_t length() const;------返回字符串的长度
    • size_t capacity() const;------返回容量
    • void clear();------清空长度
    • bool empty() const;------判断string类是否为空
    • void resize (size_t n, char c = '\0');------改变size的大小,用c填充
    • void reserve (size_t n = 0);------改变capacity的大小
    • void shrink_to_fit();------让capacity与size适应
    • const char* c_str() const;------返回首地址 

    遍历  

    • iterator begin();------首元素位置
    • iterator end();------最后一个元素的下一个位置
    • reverse_iterator rbegin();------最后一个元素的位置
    • reverse_iterator rend();------首元素的前一个位置 

    获取

    • size_t copy (char* s, size_t len, size_t pos = 0) const;------将string类中的一段字符串写入s中
    • string substr (size_t pos = 0, size_t len = npos) const;------在string类中,从pos位置开始,截取len个字符,然后将其返回
    • istream& getline (istream& is, string& str, char delim);------获取一行字符串

  • 相关阅读:
    低代码热潮下的冷思考:为何我们不能盲目追随
    rsync 远程同步
    数据结构与算法复习:第三十三弹
    代码随想录算法训练营第21天—回溯算法01 | ● 理论基础 ● *77. 组合
    ByteHouse MaterializedMySQL 增强优化
    cx3588 文档说明
    一个整合性、功能丰富的.NET网络通信框架
    echarts手动触发气泡的显示和隐藏
    Python与CAD系列基础篇(七)创建单行、多行文本并修改样式
    PyTorch显存机制分析
  • 原文地址:https://blog.csdn.net/m0_61433144/article/details/126320027