Maison > Article > développement back-end > Comment réinitialiser efficacement un Stringstream en 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>
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>
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!