博客
关于我
string常用函数
阅读量:796 次
发布时间:2023-03-24

本文共 2261 字,大约阅读时间需要 7 分钟。

标准C++中string类函数介绍

之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为它和前者比较起来,更加方便高效。string类作为一个自带内存管理的类,不用担心内存是否足够、字符串长度等等问题。我们可以用=进行赋值操作,==进行比较,+进行串联操作,甚至可以将其看作C++的基本数据类型。

为了在程序中使用string类型,必须包含头文件<string>。注意,这不是string.h,后者是C字符串头文件。使用string类时,需要在代码开头声明using namespace std;

  • 声明一个C++字符串
  • 声明一个字符串变量非常简单:

    string Str;

    这样我们就声明了一个空字符串Strstring类具有构造函数和析构函数,提供了多种初始化方式:

    • string s;:生成一个空字符串s
    • string s(str);:拷贝构造函数生成str的复制品。
    • string s(str, stridx);:将str内“始于位置stridx”的部分作为字符串的初值。
    • string s(str, stridx, strlen);:将str内“始于stridx且长度最多strlen”的部分作为字符串的初值。
    • string s(cstr);:将C字符串作为s的初值。
    • string s(chars, chars_len);:将C字符串前chars_len个字符作为s的初值。
    • string s(num, c);:生成一个包含numc字符的字符串。
    • string s(beg, end);:以区间begend(不包含end)内的字符作为字符串s的初值。
    • s.~string();:销毁字符串,释放内存。
    1. 字符串操作函数
    2. string类提供了丰富的操作函数,涵盖了赋值、比较、插入、删除、替换、连接等功能。以下是主要操作函数:

      • 赋值操作:=, assign()
      • 交换操作:swap()
      • 在尾部添加操作:+=, append(), push_back()
      • 插入操作:insert()
      • 删除操作:erase()
      • 替换操作:replace()
      • 比较操作:==, !=, <, <=, >, >=, compare()
      • 字符串长度和容量:size(), length(), max_size(), capacity()
      • 存取单个字符:[], at()
      • 输入输出操作:>>, <<, getline()
      • 查找操作:find(), rfind(), find_first_of(), find_last_of(), find_first_not_of(), find_last_not_of()
      • 子串操作:substr()
      • 迭代器操作:begin(), end(), rbegin(), rend()
      1. C++字符串与C字符串的转换
      2. C++字符串可以通过data(), c_str(), 和copy()等方法转换为C字符串。c_str()返回一个以'\0'结尾的C字符串,而data()返回一个不以'\0'结尾的字符数组。使用string进行编程时,除非必须使用C字符串,否则应优先使用string类。

        1. 字符串的比较
        2. string支持>, >=, <, <=, ==, !=等比较操作。compare()方法提供了更灵活的比较功能,可以指定比较的位置和长度。compare(pos, n, s)方法可以比较当前字符串从pos开始的n个字符与string``s的大小。

          1. 字符串的赋值与修改
          2. string类的赋值操作非常灵活,支持以下方式:

            • string s = "hello";
            • s.assign(str);
            • s.assign(str, 1, 3);
            • s.assign("gaint");
            • s.append(str);
            • s.insert(0, "my name");
            • s.replace(1, 2, "nternationalizatio");
            1. 字符串的输入输出
            2. 通过<sstream>头文件,可以将string与输入流和输出流进行交互。例如:

              string input("hello,this is a test");
              istringstream is(input);
              string s1, s2, s3, s4;
              is >> s1 >> s2 >> s3 >> s4; // s1="hello", s2="this", s3="is", s4="test"
              ostringstream os;
              os << s1 << s2 << s3 << s4;
              cout << os.str();
              1. 字符串的查找与替换
              2. string类提供了多种查找和替换函数,可以高效地处理字符串中的字符或子串。例如:

                string s = "il8n";
                s.replace(1, 2, "nternationalizatio"); // 在位置1开始替换2个字符为"nternationalizatio"
                s.erase(13); // 删除从位置13开始的所有字符
                s.find_last_not_of("abc"); // 查找字符串中最后一个不在"abc"中的字符的位置
                1. 字符串的迭代与流操作
                2. string类提供了类似STL的迭代器支持,可以使用begin(), end(), rbegin(), rend()等方法进行向前和向后遍历。同时,通过<sstream>头文件,可以将string与输入输出流进行交互。

    转载地址:http://thqfk.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现最长递增子序列算法(附完整源码)
    查看>>
    Objective-C实现有向图和无向加权图算法(附完整源码)
    查看>>
    Objective-C实现有序表查找算法(附完整源码)
    查看>>
    Objective-C实现有限状态机(附完整源码)
    查看>>
    Objective-C实现有限状态自动机FSM(附完整源码)
    查看>>
    Objective-C实现有限集上给定关系的自反关系矩阵和对称闭包关系矩阵(附完整源码)
    查看>>
    Objective-C实现服务端客户端聊天室(附完整源码)
    查看>>
    Objective-C实现朴素贝叶斯算法(附完整源码)
    查看>>
    Objective-C实现杨氏3X3矩阵(附完整源码)
    查看>>
    Objective-C实现杰卡德距离算法(附完整源码)
    查看>>
    Objective-C实现极值距离算法(附完整源码)
    查看>>
    Objective-C实现极小极大算法(附完整源码)
    查看>>
    Objective-C实现构造n以内的素数表(附完整源码)
    查看>>
    Objective-C实现某文件夹下文件重命名(附完整源码)
    查看>>
    Objective-C实现查找second Largest Element第二大元素算法(附完整源码)
    查看>>
    Objective-C实现查找整数数组中给定的最小数字算法(附完整源码)
    查看>>
    Objective-C实现查找给定节点数的树中可能的二叉搜索树的数量树算法(附完整源码)
    查看>>
    Objective-C实现查找链表的中间元素算法(附完整源码)
    查看>>
    Objective-C实现样条插值(附完整源码)
    查看>>
    Objective-C实现根据cpu和磁盘序列号生成注册码( 附完整源码)
    查看>>