258 votes

Pour chaque caractère de la chaîne

Comment faire une boucle sur chaque caractère dans la chaîne en C++? Je sais que c'est possible en python, mais je ne sais pas si c'est possible en C++

466voto

R. Martinho Fernandes Points 96873
  1. En parcourant les caractères d'un std::string, à l'aide d'une gamme à base de boucle (c'est du C++11, déjà pris en charge dans les versions récentes de GCC, clang, et la VC11 beta):

    std::string str = ???;
    for(char& c : str) {
        do_things_with(c);
    }
    
  2. En parcourant les caractères d'un std::string avec les itérateurs:

    std::string str = ???;
    for(std::string::iterator it = str.begin(); it != str.end(); ++it) {
        do_things_with(*it);
    }
    
  3. En parcourant les caractères d'un std::string avec une ancienne boucle for:

    for(std::string::size_type i = 0; i < str.size(); ++i) {
        do_things_with(str[i]);
    }
    
  4. En parcourant les caractères de caractères terminée par null tableau:

    char* str = ???;
    for(char* it = str; *it; ++it) {
        do_things_with(*it);
    }
    

24voto

Kerrek SB Points 194696

En C++moderne:

std::string s("Hello world");

for (char & c : s)
{
    std::cout << "One character: " << c << "\n";
    c = '*';
}

En C++98/03:

for (std::string::iterator it = s.begin(), end = s.end(); it != end; ++it)
{
    std::cout << "One character: " << *it << "\n";
    *it = '*';
}

Pour en lecture seule itération, vous pouvez utiliser std::string::const_iterator en C++98, for (char const & c : s) ou juste for (char c : s) en C++11.

7voto

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

1voto

Tiago Pasqualini Points 735

Pour le C-string (char []) vous devriez faire quelque chose comme ceci:

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

Pour std::string vous pouvez utiliser str.size() pour obtenir sa taille et de réitérer, comme l'exemple , ou qu'il pourrait utiliser un itérateur:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X