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?
Généralement, pour "réinitialiser" une chaîne de caractères, vous devez réinitialiser la séquence sous-jacente en une chaîne vide avec str
et effacer tous les indicateurs d'échec et d'eof avec clear
.
parser.str( std::string() );
parser.clear();
Généralement, il se passe que le premier >>
atteint la fin de la chaîne et définit le bit eof, bien que le premier court-métrage soit analysé avec succès. Les opérations sur le flux après cette opération échouent immédiatement car le bit eof du flux est toujours activé.