Namespaces
Variants

std::strstream:: str

From cppreference.net

char * str ( ) ;
(obsolète en C++98)
(supprimé en C++26)

Retourne le pointeur vers le début du tampon, après l'avoir gelé. Appelle effectivement rdbuf ( ) - > str ( ) .

Table des matières

Paramètres

(aucun)

Valeur de retour

Pointeur vers le début du tampon dans le std:: strstreambuf associé ou un pointeur nul si aucun tampon n'est disponible.

Notes

Avant un appel à str() qui utilise le résultat comme une chaîne C, le tampon du flux doit être terminé par un caractère nul. Une sortie régulière telle que stream << 1.2 ne stocke pas de terminateur nul, il doit être ajouté explicitement, généralement avec le manipulateur std::ends .

Après un appel à str() , les flux dynamiques deviennent gelés. Un appel à freeze(false) est requis avant de quitter la portée dans laquelle cet objet strstream a été créé. Sinon, le destructeur provoquera une fuite de mémoire. De plus, toute sortie supplémentaire vers un flux gelé peut être tronquée une fois qu'elle atteint la fin du tampon alloué, ce qui peut laisser le tampon non terminé par un caractère nul.

Exemple

#include <iostream>
#include <strstream>
int main()
{
    std::strstream dyn; // tampon de sortie alloué dynamiquement
    dyn << "Test: " << 1.23; // n'ajoute pas std::ends pour démontrer le comportement d'ajout
    std::cout << "The output stream holds \"";
    std::cout.write(dyn.str(), dyn.pcount()) << "\"\n"; 
    // le flux est maintenant gelé à cause de str()
    dyn << " More text" << std::ends;
    std::cout << "The output stream holds \"";
    std::cout.write(dyn.str(), dyn.pcount()) << "\"\n";
    dyn.freeze(false);
}

Sortie possible :

The stream holds "Test: 1.23"
The stream holds "Test: 1.23 More "

Voir aussi

marque le tampon comme gelé et retourne le pointeur de début de la séquence d'entrée
(fonction membre publique de std::strstreambuf )