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++
Réponses
Trop de publicités?-
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); }
-
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); }
-
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]); }
-
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); }
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.
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;
}