STL - Comment faire l'équivalent d'un "trim" sur une basic_string

STL - Comment faire l'équivalent d'un "trim" sur une basic_string - C++ - Programmation

Marsh Posté le 31-01-2003 à 16:28:35    

Je débute en STL, je n'ai que la doc de microsoft (MSDN), qui est affreusement mal foutue, d'autant plus en ce qui concerne la STL (à mon avis, ils préfèrent qu'on utilise les MFC).
Bref, je remplace mes CString par des string (basic_string pour des char), et j'arrive pas à trouver comment faire la même chose que les méthode trimLeft (virer tous le espaces à gauche), et trimRight (virer ts les espaces à droite).
Voir aussi un trim tout court (gauche et droite).
Qqn peut m'aider ?

Reply

Marsh Posté le 31-01-2003 à 16:28:35   

Reply

Marsh Posté le 31-01-2003 à 17:38:36    

Reply

Marsh Posté le 31-01-2003 à 18:27:14    

dans le code suivant str est la chaine à striper
 

Code :
  1. // Ltrim
  2.    std::string str2 = str.substr (str.find_first_not_of (" " ));
  3.    // Rtrim
  4.    std::string str3 = str.substr (0, str.find_last_not_of (" " ) + 1);
  5.    // Trim
  6.    std::string str4 = str.substr (str.find_first_not_of (" " ));
  7.    str4 = str4.substr (0, str4.find_last_not_of (" " ) + 1);

Reply

Marsh Posté le 04-02-2003 à 11:17:37    

gloop a écrit :

dans le code suivant str est la chaine à striper
 

Code :
  1. // Ltrim
  2.    std::string str2 = str.substr (str.find_first_not_of (" " ));
  3.    // Rtrim
  4.    std::string str3 = str.substr (0, str.find_last_not_of (" " ) + 1);
  5.    // Trim
  6.    std::string str4 = str.substr (str.find_first_not_of (" " ));
  7.    str4 = str4.substr (0, str4.find_last_not_of (" " ) + 1);

 


 
Merci. Ms du coup, g 2 questions :
dans le trim. ça fait quoi si str4 est NULL ?
Dans les 3 cas, si une des chaines à trimmer n'est constituée que d'espaces, ça plante. Comment pallier à ça ?

Reply

Marsh Posté le 04-02-2003 à 12:11:17    

El_gringo a écrit :


 
Merci. Ms du coup, g 2 questions :
dans le trim. ça fait quoi si str4 est NULL ?
Dans les 3 cas, si une des chaines à trimmer n'est constituée que d'espaces, ça plante. Comment pallier à ça ?


 
str4 NULL spa possib, c'est pas un pointeur ;)  
 
Par contre str4 vide c'est possible, et ca devrait passer. Faut tester...  
 

Reply

Marsh Posté le 04-02-2003 à 14:01:05    

Du coup, pour un trimR, je fais :

Code :
  1. myStr.erase (myStr.find_last_not_of (" " ) + 1);


Et pour un trimL :

Code :
  1. myStr.erase (0, myStr.find_first_not_of (" " ));


ça m'économise une copie. Et ça passe qd la chaine est vide.
 
Et pour ma question sur le NULL, je m'embrouille avec le java moi... [:iznogoud_23]


Message édité par El_gringo le 04-02-2003 à 14:01:41
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed