如何在c++中对字符串中的每个字符进行for循环?


当前回答

const char* str = "abcde";
int len = strlen(str);
for (int i = 0; i < len; i++)
{
    char chr = str[i];
    //do something....
}

其他回答

for循环可以这样实现:

string str("HELLO");
for (int i = 0; i < str.size(); i++){
    cout << str[i];
}

这将逐字符打印字符串。Str [i]返回索引i处的字符。

如果是字符数组:

char str[6] = "hello";
for (int i = 0; str[i] != '\0'; i++){
    cout << str[i];
}

基本上以上两个是c++支持的两种类型的字符串。 第二个称为c字符串,第一个称为std字符串或(c++字符串)。我建议使用c++字符串,很容易处理。

可以使用size()方法获取字符串的长度,使用方括号操作符访问每个字符。

#include<bits/stdc++.h>
using namespace std;

int main()
{
   string s;
   cin >> s;
   int length = s.size();
   for(int i = 0; i < length; i++)
   {
      process(s[i]);
   }
}

对于C-string (char[]),你应该这样做:

char mystring[] = "My String";
int size = strlen(mystring);
int i;
for(i = 0; i < size; i++) {
    char c = mystring[i];
}

对于std::string,你可以使用str.size()来获取它的大小并像示例一样迭代,或者可以使用迭代器:

std::string mystring = "My String";
std::string::iterator it;
for(it = mystring.begin(); it != mystring.end(); it++) {
    char c = *it;
}

这是另一种方法,使用标准算法。

#include <iostream>
#include <string>
#include <algorithm>

int main()
{
   std::string name = "some string";
   std::for_each(name.begin(), name.end(), [] (char c) {
      std::cout << c;
   });
}
const char* str = "abcde";
int len = strlen(str);
for (int i = 0; i < len; i++)
{
    char chr = str[i];
    //do something....
}