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

source:php
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