Maison > développement back-end > C++ > le corps du texte

Comment réinitialiser efficacement un Stringstream en C ?

DDD
Libérer: 2024-11-04 19:32:01
original
345 Les gens l'ont consulté

How to Effectively Reset a Stringstream in C  ?

Réinitialiser efficacement un flux de chaînes

En C, les flux de chaînes sont un outil précieux pour manipuler et analyser les chaînes. Pour réinitialiser un flux de chaînes, les développeurs utilisent la méthode str() pour effacer la chaîne sous-jacente. Cependant, cette approche peut ne pas réinitialiser complètement le flux.

L'étude de cas

Considérez l'extrait de code suivant :

<code class="cpp">stringstream parser;

parser << 5;
short top = 0;
parser >> top;
parser.str(""); // Attempting to reset parser

parser << 6; // Fails to insert 6 into parser
short bottom = 0;
parser >> bottom;</code>
Copier après la connexion

L'intention est pour réinitialiser le flux de l'analyseur et lui attribuer une nouvelle valeur. Cependant, de manière inattendue, le code ne parvient pas à insérer 6 dans l'analyseur.

Comprendre l'erreur

La racine du problème réside dans la réinitialisation incomplète. La méthode str() efface uniquement la chaîne sous-jacente, tandis que les indicateurs d'erreur (tels que eof et fail) restent définis. Les opérations ultérieures, comme la lecture du flux, échoueront en raison de ces indicateurs.

Technique de réinitialisation appropriée

Pour réinitialiser efficacement un flux de chaînes, il est crucial non seulement d'effacer la chaîne mais réinitialise également les indicateurs d'erreur. Ceci peut être réalisé en utilisant la méthode clear() :

<code class="cpp">parser.str( std::string() );
parser.clear();</code>
Copier après la connexion

En appelant à la fois str() et clear(), la chaîne est réinitialisée à une chaîne vide et tous les indicateurs d'erreur sont effacés, garantissant ainsi que les erreurs ultérieures les opérations réussiront.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!