Comment effacer stringstream? [dupliquer]
-
27-09-2019 - |
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?
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