Namespaces
Variants

std::ostrstream:: ostrstream

From cppreference.net
ostrstream ( ) ;
(1) (obsolète en C++98)
(supprimé en C++26)
ostrstream ( char * s, int n, std:: ios_base :: openmode mode = std:: ios_base :: out ) ;
(2) (obsolète en C++98)
(supprimé en C++26)

Construit un nouveau flux de sortie strstream et son std::strstreambuf sous-jacent.

1) Construit par défaut le std::strstreambuf sous-jacent, ce qui crée un tampon à croissance dynamique, et initialise la classe de base avec l'adresse du membre strstreambuf .
2) Initialisé la classe de base avec l'adresse du membre sous-jacent std::strstreambuf , qui est initialisé de l'une des deux manières possibles, toutes deux écrivant dans un tableau de taille fixe fourni par l'utilisateur :
a) si le bit app n'est pas défini dans mode , construit le tampon en appelant strstreambuf ( s, n, s ) . Le comportement est indéfini s'il y a moins de n éléments dans le tableau dont le premier élément est pointé par s
b) si le bit app est défini dans mode , construit le tampon en appelant strstreambuf ( s, n, s + std:: strlen ( s ) ) . Le comportement est indéfini s'il y a moins de n éléments dans le tableau dont le premier élément est pointé par s ou si le tableau ne contient pas une séquence de caractères valide terminée par un caractère nul.

Paramètres

s - tableau de caractères à utiliser comme tampon de sortie
n - taille du tableau à utiliser comme tampon de sortie
mode - spécifie le mode d'ouverture du flux. C'est un type masque binaire, les constantes suivantes sont définies (bien que seul app soit utilisé) :
Constante Explication
app se positionner en fin de flux avant chaque écriture
binary ouvrir en mode binaire
in ouvrir en lecture
out ouvrir en écriture
trunc vider le contenu du flux à l'ouverture
ate se positionner en fin de flux immédiatement après l'ouverture
noreplace (C++23) ouvrir en mode exclusif

Exemple

#include <iostream>
#include <strstream>
int main()
{
    std::ostrstream s1; // tampon dynamique
    s1 << 1 << ' ' << 3.14 << " example\n" << std::ends;
    std::cout << s1.str();
    s1.freeze(false);
    char arr[15] = "Hello";
    std::ostrstream s2(arr, sizeof arr, std::ios_base::app);
    s2 << ", world!" << std::ends;
    std::cout << s2.str() << '\n';
    std::cout << arr << '\n'; // les flux utilisent les tableaux fournis
}

Sortie :

1 3.14 example
Hello, world!
Hello, world!

Voir aussi

construit un objet strstreambuf
(fonction membre publique de std::strstreambuf )
construit un objet istrstream , allouant optionnellement le tampon
(fonction membre publique de std::istrstream )
construit un objet strstream , allouant optionnellement le tampon
(fonction membre publique de std::strstream )