basic_stringbuf (Clase)

 

Publicado: octubre de 2016

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Describe un búfer de secuencia que controla la transmisión bidireccional entre elementos de tipo Elem —cuyos rasgos de caracteres están determinados por la clase Tr— y una secuencia de elementos almacenados en un objeto Array.

template <class Elem, class Tr = char_traits<Elem>,   
    class Alloc = allocator<Elem>>  
class basic_stringbuf : public basic_streambuf<Elem, Tr>  

Parámetros

Alloc
Clase de asignador.

Elem
Tipo de elemento básico de la cadena.

Tr
Rasgos de caracteres especializados en el elemento básico de la cadena.

El objeto está asignado, extendido y liberado según sea necesario para dar cabida a los cambios en la secuencia.

Un objeto de clase basic_stringbuf<>Elem, Tr, Alloc> almacena una copia de la ios_base:: openmode argumento de su constructor como su stringbuf modo modo:

  • Si mode & ios_base::in es distinto de cero, el búfer de entrada es accesible. Para obtener más información, consulte basic_streambuf (clase).

  • Si mode & ios_base::out es distinto de cero, el búfer de salida es accesible.

Constructores

basic_stringbufConstruye un objeto de tipo basic_stringbuf.

Definiciones de tipo

allocator_typeEl tipo es un sinónimo del parámetro de plantilla Alloc.
char_typeAsocia un nombre de tipo con el parámetro de plantilla Elem.
int_typeHace que este tipo en el ámbito de basic_filebuf equivalga al tipo con el mismo nombre del ámbito Tr.
off_typeHace que este tipo en el ámbito de basic_filebuf equivalga al tipo con el mismo nombre del ámbito Tr.
pos_typeHace que este tipo en el ámbito de basic_filebuf equivalga al tipo con el mismo nombre del ámbito Tr.
traits_typeAsocia un nombre de tipo con el parámetro de plantilla Tr.

Funciones miembro

desbordamientoFunción virtual protegida a la que se puede llamar cuando se inserta un carácter nuevo en un búfer lleno.
pbackfailLa función miembro virtual protegida trata de colocar un elemento en el búfer de entrada y, después, convertirlo en el elemento actual (indicado por el siguiente puntero).
seekoffLa función miembro virtual protegida trata de modificar las posiciones actuales de las secuencias controladas.
seekposLa función miembro virtual protegida trata de modificar las posiciones actuales de las secuencias controladas.
strEstablece u obtiene el texto en un búfer de cadena sin cambiar la posición de escritura.
swap
subdesbordamientoFunción miembro virtual protegida que extrae el elemento actual de la secuencia de entrada.

Encabezado:<>>

Espacio de nombres: std

El tipo es un sinónimo del parámetro de plantilla Alloc.

typedef Alloc allocator_type;  

Construye un objeto de tipo basic_stringbuf.

basic_stringbuf(
    ios_base::openmode _Mode = ios_base::in | ios_base::out);

basic_stringbuf(
    const basic_string<Elem, Tr, Alloc>& str,  
    ios_base::openmode _Mode = ios_base::in | ios_base::out);

Parámetros

_Mode
Una de las enumeraciones en ios_base:: OpenMode.

str
Un objeto de tipo basic_string.

Comentarios

El primer constructor almacena un puntero null en todos los punteros de control del búfer de entrada y el búfer de salida. Para obtener más información, vea la sección Comentarios de la basic_streambuf (clase). También almacena _Mode como el modo de stringbuf. Para obtener más información, vea la sección Comentarios de la basic_stringbuf (clase).

El segundo constructor asigna una copia de la secuencia controlada por el objeto de cadena str. Si _Mode & ios_base::in es distinto de cero, Establece el búfer de entrada para comenzar a leer en el inicio de la secuencia. Si _Mode & ios_base::out es distinto de cero, Establece el búfer de salida debe comenzar la escritura en el inicio de la secuencia. También almacena _Mode como el modo de stringbuf. Para obtener más información, vea la sección Comentarios de la basic_stringbuf (clase).

Asocia un nombre de tipo con el Elem parámetro de plantilla.

typedef Elem char_type;  

Convierte a este tipo dentro del ámbito del basic_filebuf equivalente al tipo del mismo nombre en el Tr ámbito.

typedef typename traits_type::int_type int_type;  

Convierte a este tipo dentro del ámbito del basic_filebuf equivalente al tipo del mismo nombre en el Tr ámbito.

typedef typename traits_type::off_type off_type;  

Función virtual protegida a la que se puede llamar cuando se inserta un carácter nuevo en un búfer lleno.

virtual int_type overflow(int_type _Meta = traits_type::eof());

Parámetros

_Meta
El carácter que se va a insertar en el búfer o traits_type::eof.

Valor devuelto

Si la función no se ejecutará correctamente, devuelve traits_type::eof. De lo contrario, devuelve traits_type::not_eof(_ Meta).

Comentarios

Si _ Meta no son iguales a traits_type::eof, la función miembro virtual protegida intenta insertar el elemento traits_type::to_char_type(_ Meta) en el búfer de salida. Puede hacerlo de varias maneras:

  • Si está disponible una posición de escritura, puede incrementar el puntero siguiente para el búfer de salida y almacenar el elemento en la posición de escritura.

  • Puede disponer de una posición de escritura mediante la asignación de almacenamiento nueva o adicional para el búfer de salida. Extender el búfer de salida de este modo, también extiende cualquier búfer de entrada asociado.

La función miembro virtual protegida intenta coloca un elemento en el búfer de entrada y convertirla en el elemento actual (indicado por el puntero siguiente).

virtual int_type pbackfail(int_type _Meta = traits_type::eof());

Parámetros

_Meta
El carácter que se va a insertar en el búfer o traits_type::eof.

Valor devuelto

Si la función no se ejecutará correctamente, devuelve traits_type::eof. De lo contrario, devuelve traits_type::not_eof(_ Meta).

Comentarios

Si _Meta compara es igual a traits_type::eof, el elemento que se va a devolver es realmente ya en el flujo antes del elemento actual. De lo contrario, dicho elemento se sustituye por bytes = traits_type::to_char_type(_ Meta). La función puede poner de nuevo un elemento de distintas maneras:

  • Si está disponible una posición de putback y el elemento almacenado es igual al byte, puede disminuir el puntero siguiente para el búfer de entrada.

  • Si una posición de putback está disponible, y si el modo de stringbuf permite que la secuencia que se va a modificar ( modo aspecto ios_base::out es distinto de cero), puede almacenar los bytes en la posición de putback y disminuir el puntero siguiente para el búfer de entrada.

Convierte a este tipo dentro del ámbito del basic_filebuf equivalente al tipo del mismo nombre en el Tr ámbito.

typedef typename traits_type::pos_type pos_type;  

La función miembro virtual protegida trata de modificar las posiciones actuales de las secuencias controladas.

virtual pos_type seekoff(
    off_type _Off,  
    ios_base::seekdir _Way,  
    ios_base::openmode _Mode = ios_base::in | ios_base::out);

Parámetros

_Off
La posición de búsqueda para relativa a _Way. Para obtener más información, consulte basic_stringbuf:: off_type.

_Way
El punto de partida para las operaciones de desplazamiento. Consulte ios_base:: seekdir posibles valores.

_Mode
Especifica el modo de la posición del puntero. El valor predeterminado es que le permite modificar la lectura y escritura posiciones. Para obtener más información, consulte ios_base:: OpenMode.

Valor devuelto

Devuelve la nueva posición o la posición de una secuencia no válida.

Comentarios

Para un objeto de clase basic_stringbuf<Elem, Tr, Alloc>, una posición de la secuencia consta únicamente de un desplazamiento de la secuencia. Desplazamiento cero designa el primer elemento de la secuencia controlada.

La nueva posición se determina como sigue:

  • Si _Way == ios_base::beg, la nueva posición es el principio de la secuencia más _Off.

  • Si _Way == ios_base::cur, la nueva posición es la posición actual de la secuencia más _Off.

  • Si _Way == ios_base::end, la nueva posición es el final de la secuencia más _Off.

Si _Mode & ios_base::in es distinto de cero, la función modifica la siguiente posición de lectura en el búfer de entrada. Si _Mode & ios_base::out es distinto de cero, la función modifica la siguiente posición de escritura en el búfer de salida. Para que una secuencia se ve afectado, debe existir su búfer. Para que una operación de posición se realice correctamente, la posición de la secuencia resultante debe encontrarse dentro de la secuencia controlada. Si la función afecta a las posiciones de la secuencia, _Way debe ser ios_base::beg o ios_base::end y ambas secuencias se colocan en el mismo elemento. En caso contrario (o si se ve afectada ninguna posición), se produce un error en la operación de colocación.

Si la función se realiza correctamente en la modificación de una o ambas de las posiciones de la secuencia, devuelve la posición de la secuencia resultante. De lo contrario, se produce un error y devuelve la posición de una secuencia no válida.

La función miembro virtual protegida trata de modificar las posiciones actuales de las secuencias controladas.

virtual pos_type seekpos(pos_type _Sp, ios_base::openmode _Mode = ios_base::in | ios_base::out);

Parámetros

_Sp
La posición de búsqueda para

_Mode
Especifica el modo de la posición del puntero. El valor predeterminado es que le permite modificar la lectura y escritura posiciones.

Valor devuelto

Si la función se realiza correctamente en la modificación de una o ambas de las posiciones de la secuencia, devuelve la posición de la secuencia resultante. De lo contrario, se produce un error y devuelve la posición de una secuencia no válida. Para determinar si la posición de la secuencia no es válida, compare el valor devuelto con pos_type(off_type(-1)).

Comentarios

Para un objeto de clase basic_stringbuf<>Elem, Tr, Alloc>, una posición de la secuencia consta únicamente de un desplazamiento de la secuencia. Desplazamiento cero designa el primer elemento de la secuencia controlada. La nueva posición viene determinada por _ Sp.

Si modo aspecto ios_base::in es distinto de cero, la función modifica la siguiente posición de lectura en el búfer de entrada. Si modo aspecto ios_base::out es distinto de cero, la función modifica la siguiente posición de escritura en el búfer de salida. Para que una secuencia se ve afectado, debe existir su búfer. Para que una operación de posición se realice correctamente, la posición de la secuencia resultante debe encontrarse dentro de la secuencia controlada. En caso contrario (o si se ve afectada ninguna posición), se produce un error en la operación de colocación.

Establece u obtiene el texto en un búfer de cadena sin cambiar la posición de escritura.

basic_string<Elem, Tr, Alloc> str() const;

 
void str(
    const basic_string<Elem, Tr, Alloc>& _Newstr);

Parámetros

_Newstr
La nueva cadena.

Valor devuelto

Devuelve un objeto de clase basic_string< Elem, Tr, Alloc >, cuya secuencia controlada es una copia de la secuencia controlada por ** *esto**.

Comentarios

La primera función miembro devuelve un objeto de clase basic_string<>Elem, Tr, Alloc>, cuya secuencia controlada es una copia de la secuencia controlada por ** *esto**. La secuencia de copiado depende del modo de stringbuf almacenado:

  • Si modo aspecto ios_base::out es distinto de cero y existe un búfer de salida, la secuencia es el búfer de salida todo ( epptr - pbase elementos que comiencen por pbase).

  • Si modo aspecto ios_base::in es distinto de cero y un búfer de entrada existe, la secuencia es todo el búfer de entrada ( egptr - eback elementos que comiencen por eback).

  • De lo contrario, la secuencia copiada está vacía.

La segunda función miembro desasigna cualquier secuencia actualmente controlada por ** *esto**. A continuación, asigna una copia de la secuencia controlada por _Newstr. Si modo aspecto ios_base::in es distinto de cero, Establece el búfer de entrada para comenzar a leer al principio de la secuencia. Si modo aspecto ios_base::out es distinto de cero, Establece el búfer de salida que empiece a escribir al principio de la secuencia.

Ejemplo

// basic_stringbuf_str.cpp  
// compile with: /EHsc  
#include <iostream>  
#include <sstream>  
  
using namespace std;  
  
int main( )   
{  
   basic_string<char> i( "test" );  
   stringstream ss;  
  
   ss.rdbuf( )->str( i );  
   cout << ss.str( ) << endl;  
  
   ss << "z";  
   cout << ss.str( ) << endl;  
  
   ss.rdbuf( )->str( "be" );  
   cout << ss.str( ) << endl;  
}  

test  
zest  
be  

Asocia un nombre de tipo con el Tr parámetro de plantilla.

typedef Tr traits_type;  

Comentarios

El tipo es un sinónimo del parámetro de plantilla Tr.

Función virtual protegida que extrae el elemento actual de la secuencia de entrada.

virtual int_type underflow();

Valor devuelto

Si la función no se ejecutará correctamente, devuelve traits_type::eof. De lo contrario, devuelve el elemento actual en la secuencia de entrada que se convierten.

Comentarios

La función miembro virtual protegida intenta extraer el elemento actual bytes el búfer de entrada de avanzar la posición de la secuencia actual y devuelve el elemento como traits_type::to_int_type( bytes). Puede hacerlo de una manera: si una posición de lectura está disponible, tarda bytes como el elemento almacenado en la posición de lectura y hace avanzar el puntero siguiente para el búfer de entrada.

Intercambia el contenido de este búfer de cadena con otro búfer de cadena.

void basic_stringbuf<T>::swap(basic_stringbuf& other)  

Parámetros

other
El parámetro basic_stringbuf cuyo contenido se intercambiará con este basic_stringbuf.

Comentarios

Asigna el contenido del basic_stringbuf del lado derecho del operador al basic_stringbuf del lado izquierdo.

basic_stringbuf& basic_stringbuf:: operator=(const basic_stringbuf& other)  

Parámetros

other
Un basic_stringbuf cuyo contenido, incluidas las características de configuración regional, se asignará al stringbuf del lado izquierdo del operador.

Comentarios

Seguridad para subprocesos en la biblioteca estándar de C++
iostream de programación
Convenciones de iostreams

Mostrar: