3 votes

Boucle for basée sur la plage, utilisant un pointeur vers une chaîne de caractères.

Dans la nouvelle norme C++, C++11, on peut utiliser une boucle basée sur la plage pour traiter chaque caractère de la chaîne.

#include<iostream>
#include<string>

int main()
{
    std::string s1 = "this is an example";
    for (char &c:s1)
        //do any operation
        std::cout<<c;
    return 0;
}

Au lieu de la référence char &c:s1 comment puis-je utiliser un pointeur pour faire cela en fonction de la plage ? for boucle ? Je veux faire quelque chose comme char *p pointant vers s1 .

7voto

Dietrich Epp Points 72865

La boucle for basée sur l'intervalle ne vous donnera pas de pointeur. Cependant, vous pouvez en créer un :

for (char &c : s) {
    char *p = &c;
}

Ou vous pouvez le faire vous-même avec une boucle ordinaire :

// Note: Requires C++17, where s.data() is relaxed to a char* type.
for (char *p = s.data(), *e = p + s.size(); p != e; p++) {
}

// Pre-C++17 version.
for (char *p = &s[0], *e = p + s.size(); p != e; p++) {
}

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