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


当前回答

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++字符串,很容易处理。

其他回答

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++字符串,很容易处理。

对于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;
}

你可以通过使用字符串库中的at函数来获取字符串中的每一个char,就像我这样做的

string words;
    for (unsigned int i = 0; i < words.length(); i++)
        {
            if (words.at(i) == ' ')
            {
                spacecounter++;    // to count all the spaces in a string
                if (words.at(i + 1) == ' ')
                {
                    i += 1;
                }

这只是我的一段代码重点是你可以通过stringname。at(index)访问字符

Looping through the characters of a std::string, using a range-based for loop (it's from C++11, already supported in recent releases of GCC, clang, and the VC11 beta): std::string str = ???; for(char& c : str) { do_things_with(c); } Looping through the characters of a std::string with iterators: std::string str = ???; for(std::string::iterator it = str.begin(); it != str.end(); ++it) { do_things_with(*it); } Looping through the characters of a std::string with an old-fashioned for-loop: std::string str = ???; for(std::string::size_type i = 0; i < str.size(); ++i) { do_things_with(str[i]); } Looping through the characters of a null-terminated character array: char* str = ???; for(char* it = str; *it; ++it) { do_things_with(*it); }

可以使用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]);
   }
}