Question

    

Cette question a déjà une réponse ici:

    
            
  •              Comment effacer une variable stringstream?                                      8 réponses                          
  •     
    
stringstream parser;

parser << 5;
short top = 0;
parser >> top;
parser.str(""); //HERE I'M RESETTING parser

parser << 6; //DOESN'T PUT 6 INTO parser
short bottom = 0;
parser >> bottom;

Pourquoi ça ne marche pas?

Était-ce utile?

La solution

En règle générale à « reset » un stringstream vous devez réinitialiser les deux la séquence sous-jacente à une chaîne vide avec str et pour effacer tout échec et eof drapeaux avec clear.

parser.str( std::string() );
parser.clear();

En général ce qui se passe est que la première >> atteint la fin de la chaîne et définit le bit EOF, bien qu'il analyse avec succès le premier court-métrage. Les opérations sur le flux après ce échoueront immédiatement parce que le bit eof du flux est encore réglé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top