• C++ string库函数详解


    1. 运算符重载

    • +、+=          连接字符串
    • =         字符串赋值
    • >、>=、<、<=   字符串比较(例如a < b, aa < ab)
    • ==、!=      比较字符串
    • <<、>>       输出、输入字符串

    注意:使用重载的运算符 + 时,必须保证前两个操作数至少有一个为 string 类型。例如,下面的写法是不合法的:

    1 #include <iostream>
    2 #include <string>
    3 int main()
    4 {
    5     string str = "cat";
    6     cout << "apple" + "boy" + str; // illegal!
    7     return 0;
    8 }

    2. 字符串查找

    2.1 find() 查找函数

    1 str.find("ab");
    2 //返回字符串 ab 在 str 的位置
    3 str.find("ab", 2);
    4 //在 str[2]~str[n-1] 范围内查找并返回字符串 ab 在 str 的位置
    5 str.rfind("ab", 2);
    6 //在 str[0]~str[2] 范围内查找并返回字符串 ab 在 str 的位置

    2.2 find_first() 首次出现系列函数

    1 str.find_first_of("apple");
    2 //返回 apple 中任何一个字符首次在 str 中出现的位置
    3 str.find_first_of("apple", 2);
    4 //返回 apple 中任何一个字符首次在 str[2]~str[n-1] 范围中出现的位置
    5 str.find_first_not_of("apple");
    6 //返回除 apple 以外的任何一个字符在 str 中首次出现的位置
    7 str.find_first_not_of("apple", 2);
    8 //返回除 apple 以外的任何一个字符在 str[2]~str[n-1] 范围中首次出现的位置

    2.3 find_last() 末次出现系列函数

    1 str.find_last_of("apple");
    2 //返回 apple 中任何一个字符最后一次在 str 中出现的位置
    3 str.find_last_of("apple", 2);
    4 //返回 apple 中任何一个字符最后一次在 str[0]~str[2] 范围中出现的位置
    5 str.find_last_not_of("apple");
    6 //返回除 apple 以外的任何一个字符在 str 中最后一次出现的位置
    7 str.find_last_not_of("apple", 2);
    8 //返回除 apple 以外的任何一个字符在 str[0]~str[2] 范围中最后一次出现的位置

    注意:以上函数如果没找到的话均返回 string::npos。

    3. 字符串的子串

    1 str.substr(3); 
    2 //返回 [3] 及以后的子串
    3 str.substr(2, 4); 
    4 //返回 str[2]~str[2+(4-1)] 子串(即从[2]开始4个字符组成的字符串)

    4. 字符串替换

    1 str.replace(2, 4, "sz");
    2 //返回把 [2]~[2+(4-1)] 的内容替换为 "sz" 后的新字符串
    3 str.replace(2, 4, "abcd", 3);
    4 //返回把 [2]~[2+(4-1)] 的内容替换为 "abcd" 的前3个字符后的新字符串

    5. 字符串插入

    1 str.insert(2, "sz");
    2 //从 [2] 位置开始添加字符串 "sz",并返回形成的新字符串
    3 str.insert(2, "abcd", 3);
    4 //从 [2] 位置开始添加字符串 "abcd" 的前 3 个字符,并返回形成的新字符串
    5 str.insert(2, "abcd", 1, 3);
    6 //从 [2] 位置开始添加字符串 "abcd" 的前 [2]~[2+(3-1)] 个字符,并返回形成的新字符串

    6. 字符串追加

      除了用重载的 + 操作符,还可以使用函数来完成。

    1 str.push_back('a');
    2 //在 str 末尾添加字符'a'
    3 str.append("abc");
    4 //在 str 末尾添加字符串"abc"

    7. 字符串删除

    1 str.erase(3);
    2 //删除 [3] 及以后的字符,并返回新字符串
    3 str.erase(3, 5);
    4 //删除从 [3] 开始的 5 个字符,并返回新字符串

    8. 字符串交换

    1 str1.swap(str2);
    2 //把 str1 与 str2 交换

    9. 其他函数

     1 str.size();
     2 //返回字符串长度
     3 str.length();
     4 //返回字符串长度
     5 str.empty();
     6 //检查 str 是否为空,为空返回 1,否则返回 0
     7 str[n];
     8 //存取 str 第 n + 1 个字符
     9 str.at(n);
    10 //存取 str 第 n + 1 个字符(如果溢出会抛出异常)

    部分参考:https://www.renfei.org/blog/introduction-to-cpp-string.html

  • 相关阅读:
    VS2010 VC Project的default Include设置
    Linux 下的编辑/编译器
    用命令实现Win7远程桌面关机和重启
    怎样快速刪除Word中超链接?
    chrome浏览器世界之窗浏览器的收藏夹在哪?
    代码量查找工具[最好用的]
    C项目实践--网络协议和套接字编程
    memmove 和 memcopy
    bzoj2456: mode
    bzoj1205: [HNOI2005]星际贸易
  • 原文地址:https://www.cnblogs.com/john1015/p/13027047.html
Copyright © 2020-2023  润新知