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.
Version imprimable
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 ?
Tu pourrais montrer un exemple s'il te plait?
Je suis aussi interressé!
Merci d'avance! :ccool: :D
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:std::remove_if(str.begin(),str.end(),tonpredicat());
La meilleure façon est je pense quelque chose comme cela :
Code:
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:
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.Citation:
La meilleure façon est je pense quelque chose comme cela :
Code:
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.