📜  在 C++ 中迭代字符串的字符(1)

📅  最后修改于: 2023-12-03 14:50:52.430000             🧑  作者: Mango

在 C++ 中迭代字符串的字符

在 C++ 中,字符串是用字符数组表示的,通常使用 char 类型或 string 类型。要迭代字符串的字符,我们可以使用循环结构(例如 for 循环或 while 循环)来遍历字符串数组中的每个字符。

遍历字符数组

如果使用字符数组表示字符串,则可以使用标准数组访问语法来遍历字符串中的每个字符。例如,以下代码演示了使用 for 循环和数组下标来遍历字符数组中的每个字符:

#include <iostream>
using namespace std;

int main() {
  char str[] = "hello";
  int len = sizeof(str) / sizeof(str[0]);

  for (int i = 0; i < len; i++) {
    cout << str[i] << endl;
  }

  return 0;
}

在上述代码中,我们首先定义了一个字符数组 str,然后使用 sizeof 运算符计算数组的大小,并将其除以每个元素的大小来确定数组中元素的数量。然后,我们在 for 循环中遍历整个字符数组,并使用数组下标运算符 [] 访问每个字符。

遍历 string 对象

如果使用 string 类型表示字符串,则可以使用迭代器来访问字符串中的每个字符。迭代器是指向容器元素的对象,它提供了一种标准的机制来访问容器中的元素,并支持随机访问和遍历。

以下代码演示了如何使用 for 循环和字符串迭代器来遍历字符串中的每个字符:

#include <iostream>
#include <string>
using namespace std;

int main() {
  string str = "hello";

  for (auto it = str.begin(); it != str.end(); it++) {
    cout << *it << endl;
  }

  return 0;
}

在上述代码中,我们首先定义一个 string 类型的字符串 str,然后使用 begin 方法获取指向第一个字符的迭代器,并使用 end 方法获取指向最后一个字符的下一个位置的迭代器。然后,我们使用 for 循环遍历整个字符串,使用解引用运算符 * 访问每个字符。

使用 range-based for 循环

C++11 引入了 range-based for 循环,它提供了一种更为简单的方法来遍历容器中的元素。使用 range-based for 循环,我们可以避免使用循环变量和迭代器,从而简化代码。

以下代码演示了如何使用 range-based for 循环和字符数组或字符串对象遍历每个字符:

#include <iostream>
#include <string>
using namespace std;

int main() {
  // 遍历字符数组
  char str_arr[] = "hello";
  for (char c : str_arr) {
    cout << c << endl;
  }

  // 遍历 string 对象
  string str = "world";
  for (char c : str) {
    cout << c << endl;
  }

  return 0;
}

在上述代码中,我们使用 : 运算符将 for 循环的控制变量定义为字符类型,然后直接遍历整个字符数组或字符串对象。注意,这种方法可以用于任何实现了迭代器的 C++ 容器类型,例如 vectorlist 等。