ASCii中小写字母比大写字母大32;(可用于大小写转换)
如何遍历字符串string中的每一个字符:
【】法:str[i]
范围-based for循环(由于遍历容器)
int main() {
std::string str = "hello";
for (char c : str) {
std::cout << c << std::endl; // 访问每个字符
}
return 0;
}
迭代器
int main() {
std::string str = "hello";
for (auto it = str.begin(); it != str.end(); ++it) {
std::cout << *it << std::endl; // 访问每个字符
}
return 0;
}
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
下标运算符 [] |
直观、性能高、支持随机访问 | 需要手动管理索引、代码冗长 | 需要随机访问或高性能场景 |
| 范围-based for 循环 | 简洁、安全、易读 | 不支持随机访问、需要 C++11 | 现代 C++ 代码中推荐使用 |
| 迭代器 | 灵活、通用、支持随机访问 | 语法复杂、代码冗长 | 需要灵活操作或兼容多种容器时 |
C 风格字符串(char*) |
兼容 C 代码、性能高 | 不安全、代码冗长、不支持 C++ 特性 | 与 C 语言交互或高性能场景 |
std::for_each |
函数式风格、可复用、清晰 | 语法复杂、性能稍低 | 函数式编程风格或逻辑分离场景 |
| Lambda 表达式 | 简洁、灵活、支持捕获外部变量 | 语法复杂、性能稍低 | 现代 C++ 代码中推荐使用 |