推荐使用C++11范围-based for循环遍历字符串,语法简洁且安全;2. 可通过char引用避免拷贝,提升效率;3. 适用于只读或修改字符场景。

在C++中,遍历字符串中的每个字符是常见的操作。可以通过多种方式实现,每种方法都有其适用场景和特点。以下是几种常用的字符串遍历方法。
使用范围-based for 循环(推荐)
C++11 引入了基于范围的for循环,语法简洁,不易出错,是目前最推荐的方式。
- 直接访问字符值,适合只读操作
- 使用引用避免拷贝,提高效率
示例代码:
string str = "Hello";
for (char c : str) {
cout
}
// 使用 const 引用避免拷贝
for (const char& c : str) {
cout
}
使用传统 for 循环配合下标
通过索引访问字符串中的每一个字符,适合需要知道当前字符位置的场景。
立即学习“C++免费学习笔记(深入)”;
- 可以灵活控制遍历方向(正序、逆序)
- 支持修改字符串内容
示例代码:
string str = "Hello";
for (size_t i = 0; i
cout
}
使用迭代器遍历
利用 string 提供的 begin() 和 end() 迭代器进行遍历,适用于泛型编程或与STL算法配合使用。
- 兼容所有标准容器的遍历方式
- 可区分 const_iterator 用于只读访问
示例代码:
string str = "Hello";
for (auto it = str.begin(); it != str.end(); ++it) {
cout
}
使用指针遍历(C风格)
对于以 '\0' 结尾的 C 风格字符串,可以用指针逐个访问字符。注意:std::string 不保证以 '\0' 结尾(尽管 data() 可提供)。
示例代码:
string str = "Hello";
const char* ptr = str.c_str();
while (*ptr) {
cout
++ptr;
}
基本上就这些常用方法。日常开发中建议优先使用范围-based for 循环,代码清晰且安全。涉及性能敏感或复杂逻辑时,再考虑下标或迭代器方式。不复杂但容易忽略的是 const 引用和 size_type 的正确使用。










