Réutiliser ostringstream pour des performances efficaces des applications
Les allocations dans les applications peuvent être gourmandes en ressources, en particulier lorsqu'il s'agit de flux de données comme ostringstream. Pour optimiser les performances, il est avantageux d’éviter les allocations excessives. Une façon d'y parvenir consiste à réinitialiser un ostringstream à son état initial pour le réutiliser.
Réinitialiser l'objet à son état initial
Il existe deux approches courantes pour réinitialiser un ostringstream et réutiliser son tampon sous-jacent :
<code class="cpp">s.clear(); s.str("");</code>
Cette séquence efface efficacement l'erreur interne signale et attribue une chaîne vide à l'objet stringstream.
<code class="cpp">s.clear(); s.seekp(0); // Reset output position s.seekg(0); // Reset input position</code>
Cette méthode efface manuellement toute erreur interne marque et recherche les positions de sortie et d'entrée au début du tampon.
Prévenir les réallocations avec seekp()
Dans certains cas, vous souhaiterez peut-être éviter les réallocations tout à fait. En écrasant les données existantes dans le tampon de sortie au lieu d'attribuer une nouvelle chaîne avec str(), vous pouvez empêcher une allocation de mémoire supplémentaire :
<code class="cpp">s.clear(); s.seekp(0); s << "b";</code>
Utilisation de std::ends pour les chaînes compatibles C
Si vous devez utiliser la sortie stringstream dans les fonctions C, pensez à utiliser std::ends pour terminer la chaîne avec un caractère nul :
<code class="cpp">s.clear(); s << "hello"; s.seekp(0); s << "b" << std::ends;</code>
Remarques supplémentaires :
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!