找回密码
 register

QQ登录

只需一步,快速开始

查看: 10|回复: 0

[C++] C++标准库 std::string 全面解析

[复制链接]

[C++] C++标准库 std::string 全面解析

[复制链接]
  • 打卡等级:热心大叔
  • 打卡总天数:147
  • 打卡月天数:20
  • 打卡总奖励:146
  • 最近打卡:2025-03-25 21:45:08
Waylee

主题

0

回帖

1万

积分

仙帝

积分
18803
Waylee 2025-3-25 21:45 | 显示全部楼层 |阅读模式 | Google Chrome | Windows 10

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×

C++ 的 std::string 是一种动态且灵活的字符串容器,广泛应用于文本处理和字符串操作。本文通过一系列实际代码示例,展示 std::string 的创建、访问、修改、拼接、查找等功能,力求使你能运行代码并加深理解。

1. 创建与初始化字符串

以下示例展示如何用多种方式创建和初始化 std::string 对象:

#include <iostream>
#include <string>

int main()
{
    // 默认构造一个空字符串
    std::string emptyStr;
    std::cout << "Empty string: \"" << emptyStr << "\"\n";

    // 从C字符串构造
    std::string helloStr("Hello, world!");
    std::cout << "String from C-string: \"" << helloStr << "\"\n";

    // 从另一个std::string构造
    std::string copyStr = helloStr;
    std::cout << "Copied string: \"" << copyStr << "\"\n";

    // 重复某个字符
    std::string repeatedStr(10, '*');
    std::cout << "Repeated string: \"" << repeatedStr << "\"\n";

    return 0;
}

运行结果:

Empty string: ""
String from C-string: "Hello, world!"
Copied string: "Hello, world!"
Repeated string: "**********"

2. 访问与修改字符串中的字符

std::string 支持类似数组的下标访问,同时提供安全的 at() 方法。以下示例演示如何访问和修改字符串内容:

#include <iostream>
#include <string>

int main() {
    std::string str = "Hello, world!";

    // 使用下标访问
    std::cout << "First character: " << str[0] << "\n";

    // 使用 at() 方法
    std::cout << "Last character: " << str.at(str.size() - 1) << "\n";

    // 修改字符
    str[0] = 'h';
    str.at(str.size() - 1) = '?';
    std::cout << "Modified string: " << str << "\n";

    return 0;
}

运行结果:

First character: H
Last character: !
Modified string: hello, world?

3. 字符串拼接

std::string 提供了 + 和 += 运算符,以及 append() 方法。以下示例展示如何拼接字符串:

#include <iostream>
#include <string>

int main() {
    std::string str1 = "Hello";
    std::string str2 = "World";

    // 使用 + 运算符
    std::string result = str1 + ", " + str2 + "!";
    std::cout << "Concatenated string: " << result << "\n";

    // 使用 += 运算符
    str1 += ", ";
    str1 += str2;
    std::cout << "str1 after +=: " << str1 << "\n";

    // 使用 append 方法
    str2.append("!");
    std::cout << "str2 after append: " << str2 << "\n";

    return 0;
}

运行结果:

Concatenated string: Hello, World!
str1 after +=: Hello, World
str2 after append: World!

4. 查找与子串提取

std::string 提供了 find() 和 substr() 方法,用于查找子字符串和提取指定范围的子串。

#include <iostream>
#include <string>

int main() {
    std::string text = "The quick brown fox jumps over the lazy dog";

    // 查找子字符串的位置
    size_t pos = text.find("fox");
    if (pos != std::string::npos) {
        std::cout << "'fox' found at position: " << pos << "\n";
    }

    // 提取子字符串
    std::string sub = text.substr(16, 3); // 从位置16开始,提取3个字符
    std::cout << "Extracted substring: " << sub << "\n";

    return 0;
}

运行结果:

'fox' found at position: 16
Extracted substring: fox

5. 插入、删除和替换字符串

你可以插入新字符串,删除部分内容,或用新的内容替换旧内容:

#include <iostream>
#include <string>

int main() {
    std::string str = "Hello, !";

    // 插入字符串
    str.insert(7, "world");
    std::cout << "After insertion: " << str << "\n";

    // 删除部分内容
    str.erase(5, 2); // 删除 ", "
    std::cout << "After erase: " << str << "\n";

    // 替换部分内容
    str.replace(6, 5, "C++");
    std::cout << "After replace: " << str << "\n";

    return 0;
}

输出结果:

After insertion: Hello, world!
After erase: Helloworld!
After replace: HellowC++

6. 比较字符串

std::string 支持比较运算符和 compare() 方法,用于字符串的字典序比较:

#include <iostream>
#include <string>

int main() {
    std::string str1 = "apple";
    std::string str2 = "banana";

    // 使用比较运算符
    if (str1 < str2) {
        std::cout << str1 << " comes before " << str2 << " lexicographically.\n";
    }

    // 使用 compare 方法
    int cmp = str1.compare(str2);
    if (cmp < 0) {
        std::cout << str1 << " is less than " << str2 << "\n";
    }

    return 0;
}

运行结果:

apple comes before banana lexicographically.
apple is less than banana

7. 获取大小与清空内容

以下示例展示如何检查字符串大小、清空字符串内容,并验证是否为空:

#include <iostream>
#include <string>

int main() {
    std::string str = "Hello";

    // 获取字符串大小
    std::cout << "Size: " << str.size() << "\n";

    // 清空字符串
    str.clear();
    std::cout << "After clear, size: " << str.size() << ", empty: " << std::boolalpha << str.empty() << "\n";

    return 0;
}

运行结果:

Size: 5
After clear, size: 0, empty: true
您需要登录后才可以回帖 登录 | register

本版积分规则

雪舞知识库 | 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 |天天打卡

GMT+8, 2025-3-26 17:54 , Processed in 0.142724 second(s), 7 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表