Maison > développement back-end > C++ > Comment effacer et réutiliser un ostringstream ?

Comment effacer et réutiliser un ostringstream ?

Susan Sarandon
Libérer: 2024-10-24 01:53:29
original
602 Les gens l'ont consulté

How to Clear and Reuse an ostringstream?

Réutilisation d'un ostringstream

Dans les efforts visant à optimiser l'allocation des ressources, il peut être nécessaire de réinitialiser un ostringstream à son état initial pour éviter une allocation excessive allocations. Cet article aborde ce problème en explorant différentes méthodes pour effacer et réutiliser un ostringstream.

Réinitialiser l'objet

Pour rétablir l'ostringstream à son état d'origine, une séquence d'effacement et str peuvent être utilisés :

<code class="cpp">// Clear any flags (e.g., eof)
s.clear();

// Empty the buffer
s.str("");</code>
Copier après la connexion

Cette approche efface efficacement le tampon et réinitialise les pointeurs de flux. Alternativement, un effacement manuel peut être effectué suivi d'une recherche jusqu'au début :

<code class="cpp">// Clear any flags
s.clear();

// Reset put pointer (for output streams)
s.seekp(0);

// Reset get pointer (for input streams)
s.seekg(0);</code>
Copier après la connexion

Cette méthode évite les réallocations inutiles en écrasant le contenu du tampon existant. Par exemple :

<code class="cpp">std::ostringstream s;
s << "hello";
s.seekp(0);
s << "b";
assert(s.str() == "bello");</code>
Copier après la connexion

Pour utiliser la chaîne pour les fonctions de style C, std::ends peut être utilisé pour ajouter un caractère nul de fin :

<code class="cpp">// Append a terminating null
s << std::ends;
assert(s.str().size() == 5 && std::strlen(s.str().data()) == 1);</code>
Copier après la connexion

Bien que std::ends est un vestige du std::strstream obsolète, il reste utile dans les situations où il est nécessaire de travailler avec des tableaux de caractères de style C sans terminaison nulle explicite.

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 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