Maison >développement back-end >C++ >Comment effacer et réinitialiser correctement un StringStream en C ?

Comment effacer et réinitialiser correctement un StringStream en C ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-04 09:17:02391parcourir

How Do You Properly Clear and Reset a StringStream in 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 :

  1. Réinitialisez la chaîne sous-jacente en une chaîne vide à l'aide de parser.str(std::string()).
  2. Effacez tous les indicateurs d'échec et d'eof à l'aide de parser.clear().
<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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn