如何在 C++ 中遍历字符串

Jinku Hu 2023年10月12日
  1. 在 C++ 中使用基于范围的循环来遍历一个字符串
  2. 在 C++ 中使用 for 循环遍历字符串
如何在 C++ 中遍历字符串

本文将介绍关于在 C++ 中如何在保持索引数的情况下对一个字符串进行遍历的多种方法。

在 C++ 中使用基于范围的循环来遍历一个字符串

现代 C++ 语言风格推荐对于支持的结构,进行基于范围的迭代。同时,当前的索引可以存储在一个单独的 size_t 类型的变量中,每次迭代都会递增。注意,增量是用变量末尾的++ 运算符来指定的,因为把它作为前缀会产生一个以 1 开头的索引。下面的例子只显示了程序输出的一小部分。

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main() {
  string text = "They talk of days for which they sit and wait";

  size_t index = 0;
  for (char c : text) {
    cout << index++ << " - '" << c << "'" << endl;
  }

  return EXIT_SUCCESS;
}

输出:

0 - 'T'
1 - 'h'
2 - 'e'
...
43 - 'i'
44 - 't'

在 C++ 中使用 for 循环遍历字符串

它在传统的 for 循环中具有优雅和强大的功能,因为当内部范围涉及矩阵/多维数组操作时,它提供了灵活性。当使用高级并行化技术(如 OpenMP 标准)时,它也是首选的迭代语法。

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main() {
  string text = "They talk of days for which they sit and wait";

  for (int i = 0; i < text.length(); ++i) {
    cout << i << " - '" << text[i] << "'" << endl;
  }

  return EXIT_SUCCESS;
}

输出:

0 - 'T'
1 - 'h'
2 - 'e'
...
43 - 'i'
44 - 't'

或者,我们可以使用 at() 成员函数访问字符串的单个字符。

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main() {
  string text = "They talk of days for which they sit and wait";

  for (int i = 0; i < text.length(); ++i) {
    cout << i << " - '" << text.at(i) << "'" << endl;
  }

  return EXIT_SUCCESS;
}

输出:

0 - 'T'
1 - 'h'
2 - 'e'
...
43 - 'i'
44 - 't'
作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 创始人。Jinku 在机器人和汽车行业工作了8多年。他在自动测试、远程测试及从耐久性测试中创建报告时磨练了自己的编程技能。他拥有电气/电子工程背景,但他也扩展了自己的兴趣到嵌入式电子、嵌入式编程以及前端和后端编程。

LinkedIn Facebook

相关文章 - C++ String