Namespaces
Variants

std::strstreambuf:: str

From cppreference.net
char * str ( ) ;
(obsoleto en C++98)
(eliminado en C++26)

Llama a freeze() , luego devuelve una copia del puntero inicial del área de obtención, std::streambuf::eback() .

El inicio del área de obtención, para todos los objetos std::strstreambuf escribibles construidos mediante la interfaz proporcionada por std::strstream , es también el inicio del área de escritura.

Contenidos

Parámetros

(ninguno)

Valor de retorno

Una copia de eback() , que puede ser un puntero nulo.

Notas

Esta función normalmente se llama a través de la std::strstream interfaz.

La llamada a freeze() garantiza que el puntero devuelto permanezca válido hasta la siguiente llamada explícita a freeze ( false ) : de lo contrario (en un buffer dinámico) cualquier operación de salida podría desencadenar una reasignación del buffer que invalidaría el puntero. También causa una fuga de memoria en el destructor de std::strstreambuf , a menos que freeze ( false ) sea llamado antes de que el buffer (o, más comúnmente, el std:: strstream que lo gestiona) sea destruido.

Ejemplo

#include <iostream>
#include <strstream>
int main()
{
    std::strstream dyn; // búfer de lectura/escritura asignado dinámicamente
    dyn << "Test: " << 1.23 << std::ends;
    std::strstreambuf* buf = dyn.rdbuf();
    std::cout << "R/W buffer holds [" << buf->str() // o dyn.str()
              << "]\n";
    dyn.freeze(false); // después de llamar a .str() en un strstream dinámico
    char arr[10];
    std::ostrstream user(arr, 10); // búfer de solo escritura de tamaño fijo
    buf = user.rdbuf();
    user << 1.23 << std::ends;
    std::cout << "Write-only buffer holds [" << buf->str() // o user.str()
              << "]\n";
    std::istrstream lit("1 2 3"); // búfer de solo lectura de tamaño fijo
    buf = lit.rdbuf();
    std::cout << "Read-only buffer holds [" << buf->str() // o lit.str()
              << "]\n";
}

Salida:

R/W buffer holds [Test: 1.23]
Write-only buffer holds [1.23]
Read-only buffer holds [1 2 31 2 3]

Véase también

accede al búfer de salida
(función miembro pública de std::strstream )
accede al búfer de salida
(función miembro pública de std::ostrstream )
accede al búfer de salida
(función miembro pública de std::istrstream )