Namespaces
Variants

std::strstream:: str

From cppreference.net

char * str ( ) ;
(obsoleto en C++98)
(eliminado en C++26)

Devuelve el puntero al inicio del búfer, después de congelarlo. Efectivamente llama a rdbuf ( ) - > str ( ) .

Contenidos

Parámetros

(ninguno)

Valor de retorno

Puntero al inicio del búfer en el std:: strstreambuf asociado o un puntero nulo si no hay búfer disponible.

Notas

Antes de una llamada a str() que utilice el resultado como una cadena C, el búfer del flujo debe estar terminado en nulo. La salida regular como con stream << 1.2 no almacena un terminador nulo, debe agregarse explícitamente, típicamente con el manipulador std::ends .

Después de una llamada a str() , los streams dinámicos se congelan. Se requiere una llamada a freeze(false) antes de salir del ámbito en el que este objeto strstream fue creado. De lo contrario, el destructor filtrará memoria. Además, salida adicional a un stream congelado puede truncarse una vez que alcanza el final del búfer asignado, lo que puede dejar el búfer sin terminación nula.

Ejemplo

#include <iostream>
#include <strstream>
int main()
{
    std::strstream dyn; // búfer de salida asignado dinámicamente
    dyn << "Test: " << 1.23; // no se añade std::ends para demostrar el comportamiento de anexar
    std::cout << "The output stream holds \"";
    std::cout.write(dyn.str(), dyn.pcount()) << "\"\n"; 
    // el stream ahora está congelado debido a str()
    dyn << " More text" << std::ends;
    std::cout << "The output stream holds \"";
    std::cout.write(dyn.str(), dyn.pcount()) << "\"\n";
    dyn.freeze(false);
}

Salida posible:

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

Véase también

marca el búfer como congelado y devuelve el puntero inicial de la secuencia de entrada
(función miembro pública de std::strstreambuf )