【C++】string用法

string是C++标准库中提供的用于处理字符串的类,是一个可变长的字符序列。如要使用string,需要添加string头文件,即#include<string>

1 定义

string s;   //定义
string s = "abcd";

2 访问和修改字符串内容

  • 下标运算符[]访问和修改单个字符

  • .size() 成员函数获取字符串的长度

  • .push_back()成员函数将单个字符添加到字符串的末尾。

    string s = "Hello";
    s.push_back('!'); //s的值为"Hello!"
    
  • .pop_back()成员函数从字符串末尾删除单个字符

    string s = "Hello!";
    s.pop_back();   // 现在s的值为 "Hello"
    
  • .append()成员函数在当前字符串的末尾添加其他字符串。

    string s = "Hello";
    s.append(" World!");   //s的值为"Hello World!"
    
    • 除.append()函数以外,+=操作符也可以实现字符串拼接。

      string s = "Hello";
      s += " World!"; //s的值为"Hello World!"
      
  • .insert()成员函数向字符串中添加元素。

    • .insert(pos, str):在位置pos之前插入字符串str

      string s = "Hello!";
      s.insert(5, " World");
      // 在位置 5 之前插入字符串 " World"
      // 现在 str 的值为 "Hello World!"
      
  • .erase()成员函数来删除字符串中的内容。

    • .erase(pos, len):从位置pos开始,删除长度为len的字符。被删除的字符包含位置pos的字符。

      string s = "Hello World!";
      s.erase(6, 5);
      // 从位置 6 ('W')开始删除长度为 5 的字符
      // 现在 str 的值为 "Hello!"
      
    • .erase(first, last):删除在范围**[first, last)**之间的字符。

      string s = "Hello World!";
      auto first = s.begin() + 6;  //指向('W')
      auto last = s.begin() + 11;   //指向('!')
      sr.erase(first, last);
      // 删除范围在第6个字到第10个字符()(不包括最后一个字符)之间的字符
      // 现在 s 的值为 "Hello!"
      

3 子串提取和搜索

  • .substr()成员函数提取指定位置和长度的子串。

    string s = "abcdefg";
    string subS = s.substr(0,2); //提取从下标为0的位置开始长度为2的字符串
    
  • .find()成员函数进行字符串的搜索。(朴素匹配算法实现,时间复杂度高;KMP算法优化时间复杂度)

    • .find(str):在字符串中搜索子串str的第一个匹配项,并返回其位置。

      string sr = "Hello World!";
      size_t pos = s.find("World");
      // 在字符串中搜索 "World" 子串的第一个匹配项
      // pos 的值为 6
      
    • .find(str, pos):从位置pos开始,在字符串中搜索子串str的第一个匹配项,并返回其位置。

      string s = "Hello World!";
      size_t pos = s.find("or", 5);
      // 从位置 5 开始,在字符串中搜索 "or" 子串的第一个匹配项
      // pos 的值为 7
      

4 字符串比较

  • 可以使用 ==!=<<=>>=等操作符进行字符串的比较。

5 其他常用功能

  • .empty()成员函数检查字符串是否为空,为空返回true
  • reverse(s.begin(), s.end())成员函数将一个字符串原地反转。

【C++】string用法

string是C++标准库中提供的用于处理字符串的类,是一个可变长的字符序列。如要使用string,需要添加string头文件,即#include<string>

1 定义

string s;   //定义
string s = "abcd";

2 访问和修改字符串内容

  • 下标运算符[]访问和修改单个字符

  • .size() 成员函数获取字符串的长度

  • .push_back()成员函数将单个字符添加到字符串的末尾。

    string s = "Hello";
    s.push_back('!'); //s的值为"Hello!"
    
  • .pop_back()成员函数从字符串末尾删除单个字符

    string s = "Hello!";
    s.pop_back();   // 现在s的值为 "Hello"
    
  • .append()成员函数在当前字符串的末尾添加其他字符串。

    string s = "Hello";
    s.append(" World!");   //s的值为"Hello World!"
    
    • 除.append()函数以外,+=操作符也可以实现字符串拼接。

      string s = "Hello";
      s += " World!"; //s的值为"Hello World!"
      
  • .insert()成员函数向字符串中添加元素。

    • .insert(pos, str):在位置pos之前插入字符串str
    string s = "Hello!";
    s.insert(5, " World");
    // 在位置 5 之前插入字符串 " World"
    // 现在 str 的值为 "Hello World!"
    
  • .erase()成员函数来删除字符串中的内容。

    • .erase(pos, len):从位置pos开始,删除长度为len的字符。被删除的字符包含位置pos的字符。
    string s = "Hello World!";
    s.erase(6, 5);
    // 从位置 6 ('W')开始删除长度为 5 的字符
    // 现在 str 的值为 "Hello!"
    
    • .erase(first, last):删除在范围**[first, last)**之间的字符。

      string s = "Hello World!";
      auto first = s.begin() + 6;  //指向('W')
      auto last = s.begin() + 11;   //指向('!')
      sr.erase(first, last);
      // 删除范围在第6个字到第10个字符()(不包括最后一个字符)之间的字符
      // 现在 s 的值为 "Hello!"
      

3 子串提取和搜索

  • .substr()成员函数提取指定位置和长度的子串。

    string s = "abcdefg";
    string subS = s.substr(0,2); //提取从下标为0的位置开始长度为2的字符串
    
  • .find()成员函数进行字符串的搜索。(朴素匹配算法实现,时间复杂度高;KMP算法优化时间复杂度)

    • .find(str):在字符串中搜索子串str的第一个匹配项,并返回其位置。
    string sr = "Hello World!";
    size_t pos = s.find("World");
    // 在字符串中搜索 "World" 子串的第一个匹配项
    // pos 的值为 6
    
    • .find(str, pos):从位置pos开始,在字符串中搜索子串str的第一个匹配项,并返回其位置。

      string s = "Hello World!";
      size_t pos = s.find("or", 5);
      // 从位置 5 开始,在字符串中搜索 "or" 子串的第一个匹配项
      // pos 的值为 7
      

4 字符串比较

  • 可以使用 ==!=<<=>>=等操作符进行字符串的比较。

5 其他常用功能

  • .empty()成员函数检查字符串是否为空,为空返回true

  • reverse(s.begin(), s.end())成员函数将一个字符串原地反转。

    string s = "Hello World!";
    reverse(str.begin(), s.end());   // 字符串s现在为 "!dlroW olleH"
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值