2016-04-10 1 views
-1

comment puis-je diviser une chaîne contenant beaucoup spaces.like pour exemple cette chaîne (il est la ligne de fichier texte) 12 145 readyÉclate une chaîne contenant de nombreux espaces dans C++

je travaille à l'ancienne version de C++ (Je n'ai pas C++ 11) et je ne sais pas comment je peux le faire !. J'ai essayé

stringstream(line.substr(positionOfElement,string::npos)) 
stringstream(line.substr(positionOfElement,string::npos)) 

c'est un travail mais il est mauvais pour moi parce que je dois connaître la position de l'élément dans ma chaîne. il y a un moyen simple?

+1

Utiliser 'std :: istringstream' et' opérateur >>() ' –

+1

Puisque vous avez besoin de connaître la position de chaque jeton, je vous suggère de boucle sur les caractères, et stocker et indexer ou un pointeur chaque fois que vous trouvez un non vide qui est immédiatement précédé d'un blanc. – Logicrat

Répondre

0

merci pour vos réponses. Je trouve une réponse, et résoudre mon problème comme celui-ci:

string line("124  24 ready"); 
istringstream iss(line); 
vector<string> tokens; 
     copy(istream_iterator<string>(iss), 
      istream_iterator<string>(), 
      back_inserter(tokens)); 
+0

Vous pouvez rendre votre solution un peu plus courte en utilisant ctor de std :: vector qui prend deux itérateurs: 'vector tokens (istream_iterator (iss), istream_iterator ());' – tonisuter