2010-12-04 17 views
4

Comment puis-je lire simplement le premier nouveau "jeton" (séquence de caractères non-espaces standard, magnifiquement extraite par l'opérateur >>) sans le supprimer de le flux? Puis-je extraire la chaîne, vérifier si elle doit être remise et réinitialiser l'itérateur de flux interne? Je pense que cela pourrait fonctionner, mais ne sais pas comment la mettre en œuvre ...stringstream :: operator >> ne lit que le jeton suivant et ne l'extrait pas du flux

Exemple:

#include <string> 
    using std::string; 
#include <sstream> 
    using std::stringstream; 

int main() 
{ 
    string s("test string \\ bla blie"); 
    stringstream ss(s); 

    string token; 
    while(ss >> token) 
    { 
     if("\\" == token) 
      break; 
     else 
      cout << "Token is: " << token << "\n"; 
    } 
    return 0; 
} 

Est-ce qu'un tellg et seekg travail ici avant et conditionnellement après l'extraction de flux?

Merci!

Répondre

4

Est-ce qu'un tellg et un seekg fonctionneraient ici avant et après l'extraction du flux?

Oui.

+0

Tout, à droite, mis en œuvre et cela fonctionne. Dang, C++ est puissant: D. Merci pour la poussée de confiance. Si quelqu'un veut la mise en œuvre, demandez un exemple simplifié (mon code est très centré sur les classes, ce qui signifie que toutes les variables sont assez délocalisées, donc je ne peux pas copier-coller le code. – rubenvb