Comment parcourir les mots d'une chaîne en C++ : analyse des méthodes populaires
Bonjour à tous ! Je suis débutant en C++ et je n'arrive pas à comprendre comment diviser correctement une chaîne en mots individuels et les parcourir en boucle. En Python, cela se fait en une ligne avec `split()`, mais en C++ c'est plus compliqué.
J'ai une chaîne de type : `"Привет, как дела? У меня всё хорошо!"` Je dois afficher chaque mot séparément, en ignorant la ponctuation et les espaces. J'ai essayé d'utiliser `std::stringstream`, mais il ne supprime pas les virgules et les points d'interrogation — ils restent collés aux mots. Par exemple, j'obtiens `"Привет,"` au lieu de `"Привет"`.
J'ai essayé d'écrire ma propre solution avec une recherche manuelle des espaces via `std::string::find`, mais le code devient énorme et confus. De plus, ma version ne fonctionne pas avec les tabulations et les espaces multiples.
Pouvez-vous me dire comment faire cela correctement et proprement ? De préférence en C++ moderne (11/14/17). Donnez un exemple de code qui :
1. Divise la chaîne en mots selon les espaces et la ponctuation.
2. Ignore les espaces supplémentaires et les chaînes vides.
3. Fonctionne.