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.
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; }
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...
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager