istreambuf_iterator (Clase)

 

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

La clase de plantilla istreambuf_iterator describe un objeto de iterador de entrada que extrae elementos de caracteres de un búfer de secuencia de entrada, que se accede mediante un objeto que almacena, de tipo puntero a basic_streambuf < CharType, rasgos>.

template <class CharType class Traits = char_traits <CharType>>  
class istreambuf_iterator : public iterator<input_iterator_tag, CharType, typename Traits ::off_type, CharType *, CharType &>

Parámetros

CharType
Tipo que representa el tipo de caracteres para istreambuf_iterator.

Traits
Tipo que representa el tipo de caracteres para istreambuf_iterator. Este argumento es opcional y el valor predeterminado es char_traits < CharType >.

La clase istreambuf_iterator debe satisfacer los requisitos de un iterador de entrada.

Después de crear o incrementar un objeto de clase istreambuf_iterator con un puntero almacenado no null, el objeto intenta extraer y almacenar un objeto de tipo CharType de flujo de entrada asociado. Sin embargo, la extracción se puede retrasar hasta que el objeto se desreferencia o se copia realmente. Si se produce un error en la extracción, el objeto reemplaza el puntero almacenado con un puntero NULL, creando de esta forma un indicador de fin de secuencia.

Constructores

istreambuf_iteratorConstruye una clase istreambuf_iterator que se inicializa para leer caracteres del flujo de entrada.

Definiciones de tipo

char_typeTipo que proporciona el tipo de los caracteres de ostreambuf_iterator.
int_typeTipo que proporciona un tipo entero para istreambuf_iterator.
istream_typeTipo que proporciona el tipo de flujo de istream_iterator.
streambuf_typeTipo que proporciona el tipo de flujo de istreambuf_iterator.
traits_typeTipo que proporciona el tipo de rasgos de los caracteres de istream_iterator.

Funciones miembro

igualComprueba si dos iteradores de búfer del flujo de entrada son iguales.

Operadores

operador *El operador de desreferenciación devuelve el siguiente carácter del flujo.
operator ++Devuelve el siguiente carácter del flujo de entrada o copia el objeto antes de incrementarlo y devuelve la copia.
operador->Devuelve el valor de un miembro, si existe.

Encabezado:<>>

Espacio de nombres: std

Tipo que proporciona el tipo de los caracteres de ostreambuf_iterator.

typedef CharType char_type;

Comentarios

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

Ejemplo

// istreambuf_iterator_char_type.cpp  
// compile with: /EHsc  
#include <iterator>  
#include <vector>  
#include <iostream>  
#include <algorithm>  
  
int main( )  
{  
   using namespace std;  
  
   typedef istreambuf_iterator<char>::char_type CHT1;  
   typedef istreambuf_iterator<char>::traits_type CHTR1;  
  
   cout << "(Try the example: 'So many dots to be done'\n"  
        << " then an Enter key to insert into the output,\n"  
        << " & use a ctrl-Z Enter key combination to exit): ";  
  
   // istreambuf_iterator for input stream  
   istreambuf_iterator< CHT1, CHTR1> charInBuf ( cin );  
   ostreambuf_iterator<char> charOut ( cout );  
  
   // Used in conjunction with replace_copy algorithm  
   // to insert into output stream and replace spaces  
   // with dot-separators  
   replace_copy ( charInBuf , istreambuf_iterator<char>( ),  
        charOut , ' ' , '.' );  
}  

Comprueba la equivalencia entre dos iteradores de búfer de secuencia de entrada.

bool equal(
    const istreambuf_iterator<CharType, Traits>& right) const;

Parámetros

right
Iterador que se va a comprobar la igualdad.

Valor devuelto

True si istreambuf_iterators son los iteradores de final de la secuencia o si ninguno es un iterador de fin de la secuencia; en caso contrario false.

Comentarios

Un intervalo se define mediante la istreambuf_iterator a la posición actual y el iterador de fin de la secuencia, pero como todo no-final de la secuencia iteradores son equivalentes en la igual función miembro, no es posible definir cualquier subintervalos mediante istreambuf_iterators. El == y != operadores tienen la misma semántica.

Ejemplo

// istreambuf_iterator_equal.cpp  
// compile with: /EHsc  
#include <iterator>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
  
   cout << "(Try the example: 'Hello world!'\n"  
        << " then an Enter key to insert into the output,\n"  
        << " & use a ctrl-Z Enter key combination to exit): ";  
  
   istreambuf_iterator<char> charReadIn1 ( cin );  
   istreambuf_iterator<char> charReadIn2 ( cin );  
  
   bool b1 = charReadIn1.equal ( charReadIn2 );  
  
   if (b1)  
      cout << "The iterators are equal." << endl;  
   else  
      cout << "The iterators are not equal." << endl;  
}  

Tipo que proporciona un tipo entero para istreambuf_iterator.

typedef typename traits_type::int_type int_type;

Comentarios

El tipo es un sinónimo de Traits::int_type.

Ejemplo

// istreambuf_iterator_int_type.cpp  
// compile with: /EHsc  
#include <iterator>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
   istreambuf_iterator<char>::int_type inttype1 = 100;  
   cout << "The inttype1 = " << inttype1 << "." << endl;  
}  
\* Output:   
The inttype1 = 100.  
*\  

Tipo que proporciona el tipo de flujo de istreambuf_iterator.

typedef basic_istream<CharType, Traits> istream_type;

Comentarios

El tipo es un sinónimo de basic_istream < CharType, rasgos>.

Ejemplo

Consulte istreambuf_iterator para obtener un ejemplo de cómo declarar y utilizar istream_type.

Construye un istreambuf_iterator que se inicializa para leer caracteres de la secuencia de entrada.

istreambuf_iterator(streambuf_type* strbuf = 0) throw();

istreambuf_iterator(istream_type& _Istr) throw();

Parámetros

strbuf
El búfer de la secuencia de entrada a la que el istreambuf_iterator se va a adjuntar.

_Istr
El flujo de entrada que el istreambuf_iterator se va a adjuntar.

Comentarios

El primer constructor inicializa el puntero de búfer de secuencia de entrada con strbuf. El segundo constructor inicializa el puntero de búfer de secuencia de entrada con _Istr. rdbufy, a continuación, finalmente intenta extraer y almacenar un objeto de tipo CharType.

Ejemplo

// istreambuf_iterator_istreambuf_iterator.cpp  
// compile with: /EHsc  
#include <iterator>  
#include <vector>  
#include <algorithm>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
  
   // Following declarations will not compile:  
   istreambuf_iterator<char>::istream_type &istrm = cin;  
   istreambuf_iterator<char>::streambuf_type *strmbf = cin.rdbuf( );  
  
   cout << "(Try the example: 'Oh what a world!'\n"  
      << " then an Enter key to insert into the output,\n"  
      << " & use a ctrl-Z Enter key combination to exit): ";  
   istreambuf_iterator<char> charReadIn ( cin );  
   ostreambuf_iterator<char> charOut ( cout );  
  
   // Used in conjunction with replace_copy algorithm  
   // to insert into output stream and replace spaces  
   // with hyphen-separators  
   replace_copy ( charReadIn , istreambuf_iterator<char>( ),  
      charOut , ' ' , '-' );  
}  

El operador de desreferenciación devuelve el siguiente carácter del flujo.

CharType operator*() const;

Valor devuelto

El carácter siguiente de la secuencia.

Ejemplo

// istreambuf_iterator_operator_deref.cpp  
// compile with: /EHsc  
#include <iterator>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
  
   cout << "Type string of characters & enter to output it,\n"  
      << " with stream buffer iterators,(try: 'I'll be back.')\n"  
      << " repeat as many times as desired,\n"   
      << " then keystroke ctrl-Z Enter to exit program: ";  
   istreambuf_iterator<char> inpos ( cin );  
   istreambuf_iterator<char> endpos;  
   ostreambuf_iterator<char> outpos ( cout );  
   while ( inpos != endpos )  
   {  
 *outpos = *inpos;   //Put value of outpos equal to inpos  
      ++inpos;  
      ++outpos;  
   }  
}  

Devuelve el siguiente carácter del flujo de entrada o copia el objeto antes de incrementarlo y devuelve la copia.

istreambuf_iterator<CharType, Traits>& operator++();

istreambuf_iterator<CharType, Traits> operator++(int);

Valor devuelto

Un istreambuf_iterator o una referencia a un istreambuf_iterator.

Comentarios

El primer operador finalmente intenta extraer y almacenar un objeto de tipo CharType de flujo de entrada asociado. El segundo operador realiza una copia del objeto, incrementa el objeto y, a continuación, devuelve la copia.

Ejemplo

// istreambuf_iterator_operator_incr.cpp  
// compile with: /EHsc  
#include <iterator>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
  
   cout << "Type string of characters & enter to output it,\n"  
      << " with stream buffer iterators,(try: 'I'll be back.')\n"  
      << " repeat as many times as desired,\n"   
      << " then keystroke ctrl-Z Enter to exit program: ";  
   istreambuf_iterator<char> inpos ( cin );  
   istreambuf_iterator<char> endpos;  
   ostreambuf_iterator<char> outpos ( cout );  
   while ( inpos != endpos )  
   {  
 *outpos = *inpos;  
      ++inpos;   //Increment istreambuf_iterator  
      ++outpos;  
   }  
}  

Devuelve el valor de un miembro, si existe.

const Elem* operator->() const;

Valor devuelto

El operador devuelve ** & * *esto**.

Un tipo que proporciona el tipo de flujo de istreambuf_iterator.

typedef basic_streambuf<CharType, Traits> streambuf_type;

Comentarios

El tipo es un sinónimo de basic_streambuf < CharType, rasgos>.

Ejemplo

Consulte istreambuf_iterator para obtener un ejemplo de cómo declarar y usar istreambuf_type.

Tipo que proporciona el tipo de rasgos de los caracteres de istream_iterator.

typedef Traits traits_type;

Comentarios

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

Ejemplo

// istreambuf_iterator_traits_type.cpp  
// compile with: /EHsc  
#include <iterator>  
#include <vector>  
#include <iostream>  
#include <algorithm>  
  
int main( )  
{  
   using namespace std;  
  
   typedef istreambuf_iterator<char>::char_type CHT1;  
   typedef istreambuf_iterator<char>::traits_type CHTR1;  
  
   cout << "(Try the example: 'So many dots to be done'\n"  
        << " then an Enter key to insert into the output,\n"  
        << " & use a ctrl-Z Enter key combination to exit): ";  
  
   // istreambuf_iterator for input stream  
   istreambuf_iterator< CHT1, CHTR1> charInBuf ( cin );  
   ostreambuf_iterator<char> charOut ( cout );  
  
   // Used in conjunction with replace_copy algorithm  
   // to insert into output stream and replace spaces  
   // with dot-separators  
   replace_copy ( charInBuf , istreambuf_iterator<char>( ),  
        charOut , ' ' , '.' );  
}  

Iterator (struct)
<>>
Seguridad para subprocesos en la biblioteca estándar de C++
Biblioteca de plantillas estándar

Mostrar: