首页
学习
活动
专区
圈层
工具
发布

遍历字符串

在C++中,遍历string里的每一个字符,主要有以下三种方法。

方法一:基于范围的 for 循环

这是最现代、最简洁、也是最安全的方法。如果你不需要关心字符在第几个位置,那么首选这种方法

工作原理:它像一个魔法,能自动从字符串s中一个一个地取出字符,放到你指定的变量c中,直到字符串末尾。

场景1:只读取字符

string s = "Hello";// 自动遍历 s 中的每个字符,每次循环 c 的值都不同for (char c : s) {   cout << c << "-";}// 输出: H-e-l-l-o-

场景2:修改字符串中的字符

如果你想在循环里修改字符串,只需要在char后面加上一个&符号。这个&意味着c是原字符串中字符的一个“别名”,修改c就会直接修改原字符串。

string s = "test";// 注意 char& cfor (char& c : s) {   // 将每个字符都变成大写   c = toupper(c);}cout << s; // 输出: TEST

优点:代码干净、可读性强、绝对不会发生越界错误。

缺点:在循环内无法直接得知当前字符的索引(位置)。

方法二:使用下标的 for 循环

当你**需要知道当前字符的位置(下标)**时,就用这种传统的方法。

工作原理:通过一个索引变量i,从0开始,一直循环到字符串长度 - 1。在循环体内,通过s[i]来访问对应的字符。

示例

string s = "World";// s.length() 获取字符串的长度for (int i = 0; i < s.length(); i++) {   // s[i] 是第 i 个字符   cout << "位置 " << i << " 的字符是: " << s[i] << endl;}输出:位置 0 的字符是: W位置 1 的字符是: o位置 2 的字符是: r位置 3 的字符是: l位置 4 的字符是: d

优点:可以同时获得字符和它的索引i。

缺点:代码比方法一长,需要手动管理循环变量,有写错条件的微小风险。

方法三:使用迭代器的 for 循环 (通用方法)

迭代器(Iterator)是C++标准库(STL)里的一个核心工具,它像一个通用的“指针”,可以用来遍历各种数据容器(比如string,vector等)。虽然语法稍复杂,但理解它有助于你深入学习C++。

工作原理

s.begin():获取一个指向字符串开头的迭代器。

s.end():获取一个指向字符串末尾之后的迭代器。

循环条件就是it != s.end(),当迭代器还没走到结尾时,循环继续。

*it:获取迭代器当前指向的那个字符。

示例

string s = "Power";// 使用 auto 让编译器自动推断迭代器的类型for (auto it = s.begin(); it != s.end(); it++) {   // *it 就是当前字符   cout << *it << " ";}// 输出: P o w e r

优点:功能强大,是STL的通用遍历方式,适用于所有标准容器。

缺点:对于简单地遍历字符串来说,语法显得有些繁琐。

总结与建议

  • 发表于:
  • 原文链接https://page.om.qq.com/page/ObSrFTBKMhJ0RzHQ2SgvAKVw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。
领券