Namespaces
Variants

std::strstreambuf:: str

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

Appelle freeze() , puis retourne une copie du pointeur de début de la zone de lecture, std::streambuf::eback() .

Le début de la zone de récupération, pour tous les objets std::strstreambuf modifiables construits via l'interface fournie par std::strstream , est également le début de la zone d'écriture.

Table des matières

Paramètres

(aucun)

Valeur de retour

Une copie de eback() , qui peut être un pointeur nul.

Notes

Cette fonction est généralement appelée via l'interface std::strstream .

L'appel à freeze() garantit que le pointeur retourné reste valide jusqu'au prochain appel explicite à freeze ( false ) : autrement (sur un tampon dynamique) toute opération de sortie pourrait déclencher une réallocation du tampon qui invaliderait le pointeur. Cela cause également une fuite de mémoire dans le destructeur de std::strstreambuf , sauf si freeze ( false ) est appelé avant que le tampon (ou, plus communément, le std:: strstream qui le gère) soit détruit.

Exemple

#include <iostream>
#include <strstream>
int main()
{
    std::strstream dyn; // tampon lecture/écriture alloué dynamiquement
    dyn << "Test: " << 1.23 << std::ends;
    std::strstreambuf* buf = dyn.rdbuf();
    std::cout << "Le tampon R/W contient [" << buf->str() // ou dyn.str()
              << "]\n";
    dyn.freeze(false); // après avoir appelé .str() sur un strstream dynamique
    char arr[10];
    std::ostrstream user(arr, 10); // tampon écriture seule de taille fixe
    buf = user.rdbuf();
    user << 1.23 << std::ends;
    std::cout << "Le tampon écriture seule contient [" << buf->str() // ou user.str()
              << "]\n";
    std::istrstream lit("1 2 3"); // tampon lecture seule de taille fixe
    buf = lit.rdbuf();
    std::cout << "Le tampon lecture seule contient [" << buf->str() // ou lit.str()
              << "]\n";
}

Sortie :

Le tampon R/W contient [Test: 1.23]
Le tampon écriture seule contient [1.23]
Le tampon lecture seule contient [1 2 31 2 3]

Voir aussi

accède au tampon de sortie
(fonction membre publique de std::strstream )
accède au tampon de sortie
(fonction membre publique de std::ostrstream )
accède au tampon de sortie
(fonction membre publique de std::istrstream )