c++ string

std::string 是 C++ 标准库提供的字符串类类型,用来保存和操作一串字符。

复制代码
std::string name = "Alice";
  • std::string 是类型。
  • name 是这个类型的对象。
  • "Alice" 是用来初始化对象的文字内容。

使用它需要包含 <string>

复制代码
#include <string>

如果还需要在终端输出,就再包含:

复制代码
#include <iostream>

它是类,所以有构造函数。

下面是几种常用的创建方式,变量名彼此不同:

cpp 复制代码
// 默认构造:创建一个空字符串对象
std::string s1;

// 使用文字初始化
std::string s2 = "Hello";

// 直接将参数传给构造函数
std::string s3("World");

// 创建包含 5 个 A 的字符串
std::string s4(5, 'A');

// 根据已有字符串对象,拷贝构造另一个对象
std::string s5 = s2;
对象 保存的内容
s1 "",空字符串
s2 "Hello"
s3 "World"
s4 "AAAAA"
s5 "Hello"
操作 作用
text.size() 返回其中的 char 元素数量
text.empty() 判断内容是否为空
text.clear() 清空内容,对象本身仍然存在
text[0] 访问第一个字符,要求字符串中存在这个字符
text.c_str() 获取访问字符串字符数据的 const char*
cpp 复制代码
#include <iostream>
#include <string>

int main()
{
    // 让 bool 值显示为 true / false,而不是 1 / 0
    std::cout << std::boolalpha;

    // 1. 默认构造一个空字符串对象
    std::string text;

    std::cout << "Initially empty: "
              << text.empty() << '\n';

    // 2. 给已有对象赋值
    text = "Hello";

    std::cout << "After assignment: "
              << text << '\n';

    // 3. 在原字符串后面追加文字
    text += " World";

    std::cout << "After append: "
              << text << '\n';

    // 4. 查询长度:Hello 为 5,空格为 1,World 为 5
    std::cout << "Length: "
              << text.size() << '\n';

    // 5. 修改第一个字符
    text[0] = 'h';

    std::cout << "After change: "
              << text << '\n';

    // 6. 拷贝构造另一个字符串对象
    std::string copy = text;

    // 修改副本,原对象的内容不变
    copy[0] = 'H';

    std::cout << "Original: " << text << '\n';
    std::cout << "Copy: " << copy << '\n';

    // 7. 通过 c_str() 提供的字符指针输出内容
    std::cout << "C string: "
              << text.c_str() << '\n';

    // 8. 清空内容,text 对象仍然存在
    text.clear();

    std::cout << "After clear: "
              << text.empty()
              << ", length: "
              << text.size() << '\n';

    return 0;
}
cpp 复制代码
Initially empty: true
After assignment: Hello
After append: Hello World
Length: 11
After change: hello World
Original: hello World
Copy: Hello World
C string: hello World
After clear: true, length: 0
相关推荐
raindayinrain7 小时前
c++高性能--原子操作,无锁编程,操作顺序
开发语言·c++·性能优化
学逆向的7 小时前
C++ 合并命名空间
开发语言·c++·网络安全
Zhao-Jichao7 小时前
VS2026 打包 C++ 程序生成 EXE,借助 Installer Project 扩展工具
开发语言·c++
学逆向的8 小时前
C 局部静态变量
c语言·开发语言·网络安全
小徐不徐说8 小时前
C++ 接口与插件设计:从工厂注册到 Qt 动态插件
数据库·c++·qt·系统架构·程序设计
大都督会赢的9 小时前
C++第一节课
开发语言·c++
UIU1149 小时前
P1233 [ICPC 2001 Taejon R] 木棍加工
数据结构·c++·算法·动态规划
“AI国潮设计-小江”9 小时前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc
小王C语言9 小时前
Qt常用控件:容器类控件,标题分组框、标签页(浏览器标签)
开发语言·qt