跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
C++ string 类
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
{{DISPLAYTITLE:C++ String类}} '''C++ String类'''是标准模板库(STL)中提供的动态字符串类型,用于替代C风格字符数组(`char[]`),提供更安全、灵活和高效的字符串操作功能。本节将详细介绍其核心特性、常用方法及实际应用。 == 概述 == C++中的{{Inline-code | 1=std::string}}类(定义在头文件{{Inline-code | 1=<string>}}中)封装了字符序列,支持动态内存管理、丰富的成员函数和运算符重载。与C风格字符串相比,其主要优势包括: * '''自动内存管理''':无需手动分配/释放内存。 * '''安全性''':避免缓冲区溢出风险。 * '''功能性''':内置拼接、查找、替换等操作。 == 基本操作 == === 声明与初始化 === {{syntaxhighlight|lang=cpp|code= #include <string> #include <iostream> int main() { std::string s1; // 空字符串 std::string s2 = "Hello"; // 从字面量初始化 std::string s3("World"); // 构造函数初始化 std::string s4(s2); // 拷贝构造 std::cout << s2 + " " + s3; // 输出: Hello World return 0; } }} === 常用成员函数 === {| class="wikitable" ! 方法 !! 描述 !! 示例 |- | <code>length()</code> || 返回字符串长度 || <code>s2.length() // 5</code> |- | <code>append()</code> || 追加内容 || <code>s2.append("!") // "Hello!"</code> |- | <code>find()</code> || 查找子串位置 || <code>s2.find("ell") // 1</code> |- | <code>substr()</code> || 提取子串 || <code>s2.substr(1, 3) // "ell"</code> |} == 实际应用案例 == === 用户输入处理 === {{syntaxhighlight|lang=cpp|code= #include <string> #include <iostream> int main() { std::string username; std::cout << "Enter your name: "; std::getline(std::cin, username); // 读取整行输入 if (!username.empty()) { std::cout << "Welcome, " << username << "!\n"; } else { std::cout << "Name cannot be empty.\n"; } return 0; } }} '''输入/输出示例''': <pre>Enter your name: Alice Welcome, Alice! </pre> === 字符串分割 === 使用{{Inline-code | 1=find}}和{{Inline-code | 1=substr}}实现按分隔符分割字符串: {{syntaxhighlight|lang=cpp|code= #include <vector> #include <string> std::vector<std::string> split(const std::string &s, char delimiter) { std::vector<std::string> tokens; size_t start = 0, end = s.find(delimiter); while (end != std::string::npos) { tokens.push_back(s.substr(start, end - start)); start = end + 1; end = s.find(delimiter, start); } tokens.push_back(s.substr(start)); return tokens; } }} == 高级特性 == === 迭代器支持 === {{Inline-code | 1=std::string}}兼容STL迭代器,支持范围循环: {{syntaxhighlight|lang=cpp|code= for (char c : s2) { std::cout << c << " "; // 输出: H e l l o } }} === 性能优化 === * '''预留空间''':通过`reserve()`减少动态分配次数。 * '''移动语义''':C++11后支持移动构造,提升大字符串传递效率。 <mermaid> graph LR A[创建字符串] --> B[操作: 拼接/查找] B --> C{是否需要扩容?} C -->|是| D[自动分配新内存] C -->|否| E[直接修改] </mermaid> == 数学表示 == 字符串长度计算可表示为: <math> L(s) = \sum_{i=0}^{n-1} \begin{cases} 1 & \text{如果 } s[i] \text{ 是有效字符} \\ 0 & \text{否则} \end{cases} </math> == 总结 == {{Inline-code | 1=std::string}}是C++中处理文本的核心工具,结合了易用性与高性能。建议初学者掌握其基本操作后,逐步探索高级特性如正则表达式({{Inline-code | 1=<regex>}})和国际化支持({{Inline-code | 1=locale}})。 [[Category:编程语言]] [[Category:C++]] [[Category:C++ 字符串]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
该页面使用的模板:
模板:Inline-code
(
编辑
)
模板:Syntaxhighlight
(
编辑
)
模板:Yesno
(
编辑
)