📅  最后修改于: 2023-12-03 14:50:52.430000             🧑  作者: Mango
在 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
类型表示字符串,则可以使用迭代器来访问字符串中的每个字符。迭代器是指向容器元素的对象,它提供了一种标准的机制来访问容器中的元素,并支持随机访问和遍历。
以下代码演示了如何使用 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
循环遍历整个字符串,使用解引用运算符 *
访问每个字符。
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++ 容器类型,例如 vector
、list
等。