提示信息

C++ string 类的深度解析:探索字符串操作的核心

风在云颠 已关注

C++ std::string 是一个常用且强大的类,用于处理和操作字符串。它位于标准库的 <string> 头文件中,隶属于 std 命名空间。以下是对 C++ std::string 类的深入解析,涵盖其核心操作和特性。

1. 初始化与赋值

  • 初始化:

    1. std::string s1; // 默认构造 - 空字符串
    2. std::string s2("Hello, World!"); // 直接初始化
    3. std::string s3(s2); // 拷贝构造
    4. std::string s4(5, 'a'); // 初始化为 "aaaaa"
  • 赋值操作:

    1. s1 = "New String"; // 使用 = 进行赋值
    2. s2 = s3; // 拷贝赋值
    3. s3.assign("Another String"); // 使用 assign 方法

2. 常用操作

  • 连接与追加:

    1. s1 = s2 + s4; // 使用 + 操作符连接
    2. s1 += s2; // 使用 += 追加
    3. s1.append(" more text"); // 使用 append 方法追加
  • 大小与容量:

    1. size_t length = s1.size(); // 获取长度,等价于 length()
    2. size_t capacity = s1.capacity(); // 获取容量
    3. bool isEmpty = s1.empty(); // 检查是否为空
    4. s1.resize(10); // 调整大小
  • 访问字符和子串:

    1. char ch = s1[1]; // 访问字符
    2. char ch2 = s1.at(2); // 使用 at 访问,带边界检查
    3. std::string sub = s1.substr(0, 5); // 提取子串

3. 查找与替换

  • 查找:

    1. size_t pos = s1.find("World"); // 查找子串
    2. size_t rpos = s1.rfind("o"); // 反向查找
  • 替换:

    1. s1.replace(0, 5, "Hi"); // 替换子串

4. 比较操作

  • 比较:
    if (s1 == s2) { /* Do something */ } if (s1 < s3) { /* Do something */ } int cmpResult = s1.compare(s3); // 比较,返回负值、0或正值

5. 输入与输出

  • 标准流:
    std::cout << s1 << std::endl; // 输出 std::cin >> s1; // 输入单个单词 std::getline(std::cin, s1); // 输入整行

6. 其他高级特性

  • 迭代器:

    1. for (std::string::iterator it = s1.begin(); it != s1.end(); ++it) {
    2. // 迭代每一个字符
    3. }
  • C 风格字符串:

    1. const char* cstr = s1.c_str(); // 获取 C 风格字符串
  • 字符替换与删除:

    1. s1.erase(0, 5); // 删除位置0开始的5个字符
    2. s1.insert(0, "Start "); // 插入字符串

总结

std::string 提供了丰富且强大的功能来操作字符串,使之成为 C++ 处理文本的得力工具。对于性能要求严格的场合,理解std::string 的内部机制(例如储存管理、拷贝优化等)也很重要。通过全面的掌握这些操作,你能高效地处理各种字符串相关问题。

    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
风在云颠 关注 已关注

最近一次登录:2024-11-19 21:06:25   

暂时还没有签名,请关注我或评论我的文章
×
免费图表工具,画流程图、架构图