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
Libérer: 2024-11-04 09:17:02
original
401 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal