Bonjour à tous;
Vous ne savez pas s'il existe une méthode qui permet de nettoyer les blancs dans les string.
Merci pour votre aide.
Bonjour à tous;
Vous ne savez pas s'il existe une méthode qui permet de nettoyer les blancs dans les string.
Merci pour votre aide.
C'est-à-dire ?
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
Tu pourrais montrer un exemple s'il te plait?
Je suis aussi interressé!
Merci d'avance!![]()
![]()
Hé bien il suffit de créér un prédicat renvoyant true si le caractère passé est un espace, false sinon.
Et ensuie faire :
Mais je pense que cela ne sera pas terrible du fait que la chaine aura la même taille et donc il risque d'y avoir des lettres laissées en trop.
Code : Sélectionner tout - Visualiser dans une fenêtre à part std::remove_if(str.begin(),str.end(),tonpredicat());
La meilleure façon est je pense quelque chose comme cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 string src = "S a l u t"; string dest; int i = 0; while(src[i]!='\0') { if(src[i]!=' ') { dest += src[i]; } ++i; }
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
Une méthode permettant de nettoyer les blancs dans une chaine de caractères.
Il n'y en a pas de toute faite je crois, mais tu peux utiliser la méthode find_first_of() de la classe std::string.
Exemple:
A la sortie de la boucle, la chaine de caractères out devrait contenir str débarassée de ses séparateurs (à tester...).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #include <string> using namespace std; string str = "chaine de test qui sera illisible au final", out; string::size_type l = 0, r; while (l < str.size() && (r = str.find_first_of(" \t", l)) != string::npos) { if (r != l) out += str.substr(l, r - l)); l = ++r; }
Réponse et code donnés dans la FAQ...
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Totalement faux.La meilleure façon est je pense quelque chose comme cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 string src = "S a l u t"; string dest; int i = 0; while(src[i]!='\0') { if(src[i]!=' ') { dest += src[i]; } ++i; }
std::string n'est pas terminé par 0, c'est une technique utilisée pour les chaînes C.
Ensuite ton code est peu performant, car à chaque passage dans la boucle tu demandes d'agrandir d'un byte la taille actuelle de la mémoire allouée, alors que tu connais dès le début la taille dont tu vas avoir besoin.
Ah oui tu as raison, il faudrait réserver avand, et utiliser les iterator ...
Enfin un peu simpliste mon code.
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
Partager