Namespaces
Variants

std::basic_stringbuf<CharT,Traits,Allocator>:: str

From cppreference.net
(1)
std:: basic_string < CharT, Traits, Allocator > str ( ) const ;
(hasta C++20)
std:: basic_string < CharT, Traits, Allocator > str ( ) const & ;
(desde C++20)
template < class SAlloc >
std:: basic_string < CharT, Traits, SAlloc > str ( const SAlloc & a ) const ;
(2) (desde C++20)
std:: basic_string < CharT, Traits, Allocator > str ( ) && ;
(3) (desde C++20)
void str ( const std:: basic_string < CharT, Traits, Allocator > & s ) ;
(4)
template < class SAlloc >
void str ( const std:: basic_string < CharT, Traits, SAlloc > & s ) ;
(5) (desde C++20)
void str ( std:: basic_string < CharT, Traits, Allocator > && s ) ;
(6) (desde C++20)
template < class StringViewLike >
void str ( const StringViewLike & t ) ;
(7) (desde C++26)

Obtiene y establece la cadena subyacente.

En las descripciones siguientes, buf y mode son miembros de datos solo para exposición de * this .

1) Crea y devuelve un objeto std::basic_string que contiene una copia de la secuencia de caracteres subyacente de este std::basic_stringbuf . Para flujos de solo entrada, la cadena devuelta contiene los caracteres del rango [ eback() , egptr() ) . Para flujos de entrada/salida o solo salida, contiene los caracteres desde pbase() hasta el último carácter de la secuencia, independientemente de egptr() y epptr() .
La secuencia de caracteres miembro en un búfer abierto para escritura puede estar sobreasignada con fines de eficiencia. En ese caso, solo se devuelven los caracteres inicializados : estos caracteres son los que se obtuvieron del argumento de cadena del constructor, del argumento de cadena de la llamada más reciente a una sobrecarga de establecimiento de str() , o de una operación de escritura. Una implementación típica que utiliza sobreasignación mantiene un puntero de marca de agua alta para rastrear el final de la parte inicializada del búfer y esta sobrecarga devuelve los caracteres desde pbase() hasta el puntero de marca de agua alta.
Equivalente a return std:: basic_string < CharT, Traits, Allocator > ( view ( ) , get_allocator ( ) ) ; .
(desde C++20)
2) Igual que (1) , excepto que a se utiliza para construir el std::basic_string devuelto. Equivalente a return std:: basic_string < CharT, Traits, SAlloc > ( view ( ) , a ) ; .
Esta sobrecarga participa en la resolución de sobrecarga solo si SAlloc cumple con los requisitos de Allocator .
3) Crea un objeto std::basic_string como si se construyera por movimiento desde la secuencia de caracteres subyacente de * this en buf . buf puede necesitar ajustarse para contener el mismo contenido que en (1) inicialmente. Después de eso, establece buf como vacío y llama a init_buf_ptrs () , luego retorna el objeto std::basic_string .
4) Reemplaza la secuencia de caracteres subyacente como si fuera mediante buf = s , luego llama a init_buf_ptrs () .
5) Lo mismo que (4) , excepto que el tipo del asignador de s no es Allocator .
Esta sobrecarga participa en la resolución de sobrecarga solo si std:: is_same_v < SAlloc, Allocator > es false .
6) Reemplaza la secuencia de caracteres subyacente como si fuera mediante buf = std :: move ( s ) , luego llama a init_buf_ptrs () .
7) Convierte implícitamente t a una vista de cadena sv como si fuera mediante std:: basic_string_view < CharT, Traits > sv = t ; , luego reemplaza la secuencia de caracteres subyacente como si fuera mediante buf = sv , luego llama a init_buf_ptrs () .
Esta sobrecarga participa en la resolución de sobrecarga solo si std:: is_convertible_v < const StringViewLike & ,
std:: basic_string_view < CharT, Traits >>
es true .

Contenidos

Parámetros

s - un objeto std::basic_string que contiene la secuencia de caracteres de reemplazo
t - un objeto (convertible a std::basic_string_view ) que contiene la secuencia de caracteres de reemplazo
a - asignador a utilizar para todas las asignaciones de memoria del std::basic_string devuelto

Valor de retorno

1-3) Un std::basic_string objeto que contiene la secuencia de caracteres subyacente de este búfer.
4-7) (ninguno)

Notas

Esta función se accede típicamente a través de std::basic_istringstream::str() , std::basic_ostringstream::str() , o std::basic_stringstream::str() .

Macro de prueba de características Valor Estándar Característica
__cpp_lib_sstream_from_string_view 202306L (C++26) Interconexión de flujos de cadena con std::string_view

Ejemplo

#include <iostream>
#include <sstream>
int main()
{
    int n;
    std::istringstream in;  // could also use in("1 2")
    in.rdbuf()->str("1 2"); // set the get area
    in >> n;
    std::cout << "after reading the first int from \"1 2\", the int is " 
              << n << ", str() = \"" << in.rdbuf()->str() << "\"\n"; // or in.str()
    std::ostringstream out("1 2");
    out << 3;
    std::cout << "after writing the int '3' to output stream \"1 2\""
              << ", str() = \"" << out.str() << "\"\n";
    std::ostringstream ate("1 2", std::ios_base::ate); // C++11
    ate << 3;
    std::cout << "after writing the int '3' to append stream \"1 2\""
              << ", str() = \"" << ate.str() << "\"\n";
}

Salida:

after reading the first int from "1 2", the int is 1, str() = "1 2"
after writing the int '3' to output stream "1 2", str() = "3 2"
after writing the int '3' to append stream "1 2", str() = "1 23"

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 432 C++98 1. la sobrecarga (1) no especificaba el contenido
de la secuencia de caracteres subyacente
2. la sobrecarga (4) no especificaba cómo se
inicializan las secuencias de entrada y salida
ambos especificados
LWG 562 C++98 la sobrecarga (4) establecía epptr() para apuntar un carácter más allá del último
carácter subyacente si bool ( mode & std:: ios_base :: out ) == true
epptr() puede establecerse
más allá de esa posición

Véase también

obtiene o establece los contenidos del objeto de dispositivo de cadena subyacente
(función miembro pública de std::basic_stringstream<CharT,Traits,Allocator> )
(C++20)
obtiene una vista sobre la secuencia de caracteres subyacente
(función miembro pública)