Maison >développement back-end >C++ >Comment effacer et réinitialiser correctement un StringStream en C ?
Effacement et réinitialisation de StringStream
En C , un stringstream est un tampon d'entrée/sortie associé à un objet chaîne. Il permet la manipulation de chaînes à l'aide d'opérations de flux.
Énoncé du problème :
Considérez le code suivant :
<code class="cpp">stringstream parser; parser << 5; short top = 0; parser >> top; parser.str(""); // Attempt to reset parser parser << 6; // Doesn't put 6 into parser short bottom = 0; parser >> bottom;</code>
Le problème se pose lors de la tentative pour réutiliser le stringstream après avoir effacé son contenu à l'aide de parser.str("").
Solution :
Pour effacer correctement un stringstream, vous devez effectuer deux étapes :
<code class="cpp">parser.str( std::string() ); parser.clear();</code>
Explication :
Le premier >> L'opération lit l'entier 5 dans le flux de chaînes et définit le bit eof car la fin de la chaîne a été atteinte. La tentative suivante de lecture de 6 échoue car le bit eof est toujours activé. En réinitialisant la chaîne sous-jacente et en effaçant les indicateurs, vous restaurez le flux à sa configuration initiale et permettez aux opérations ultérieures de réussir.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!