Compartir vía


ostream_iterator (Clase)

La plantilla de clase ostream_iterator describe un objeto iterador de salida que escribe elementos sucesivos en el flujo de salida con la extracción operator <<.

Sintaxis

template <class Type class CharType = char class Traits = char_traits <CharType>>
class ostream_iterator

Parámetros

Tipo
Tipo de objeto que se va a insertar en el flujo de salida.

CharType
Tipo que representa el tipo de caracteres para ostream_iterator. Este argumento es opcional y el valor predeterminado es char.

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

La clase ostream_iterator debe satisfacer los requisitos de un iterador de salida. Los algoritmos se pueden escribir directamente en el flujo de salida mediante ostream_iterator.

Constructores

Constructor Descripción
ostream_iterator Construye una clase ostream_iterator que se inicializa y delimita para escribir caracteres en el flujo de salida.

Typedefs

Nombre de tipo Descripción
char_type Tipo que proporciona el tipo de los caracteres de ostream_iterator.
ostream_type Tipo que proporciona el tipo de flujo de ostream_iterator.
traits_type Tipo que proporciona el tipo de rasgos de los caracteres de ostream_iterator.

Operadores

Operador Descripción
operator* Desreferencia el operador usado para implementar la expresión de iterador de salida * i = x.
operator++ Operador de incremento no funcional que devuelve un objeto ostream_iterator al mismo objeto que señalaba antes de que se llamara a la operación.
operator= Operador de asignación que se usa para implementar la expresión de iterador de salida * i = x para escribir en un flujo de salida.

Requisitos

Encabezado:<iterator>

Espacio de nombres: std

ostream_iterator::char_type

Un tipo que proporciona el tipo de caracteres del iterador.

typedef CharType char_type;

Comentarios

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

Ejemplo

// ostream_iterator_char_type.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;

   typedef ostream_iterator<int>::char_type CHT1;
   typedef ostream_iterator<int>::traits_type CHTR1;

   // ostream_iterator for stream cout
   // with new line delimiter:
    ostream_iterator<int, CHT1, CHTR1> intOut ( cout , "\n" );

   // Standard iterator interface for writing
   // elements to the output stream:
   cout << "The integers written to the output stream\n"
        << "by intOut are:" << endl;
*intOut = 10;
*intOut = 20;
*intOut = 30;
}
/* Output:
The integers written to the output stream
by intOut are:
10
20
30
*/

ostream_iterator::operator*

Operador de desreferencia usado para implementar la expresión de iterador de salida * ii = x.

ostream_iterator<Type, CharType, Traits>& operator*();

Valor devuelto

Una referencia a ostream_iterator.

Comentarios

Los requisitos para un iterador de salida que ostream_iterator debe satisfacer solo requieren que la expresión * ii = t sea válida y no indique nada sobre el operator o el operator= por cuenta propia. El operador miembro en esta implementación devuelve *this.

Ejemplo

// ostream_iterator_op_deref.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;

   // ostream_iterator for stream cout
   // with new line delimiter
   ostream_iterator<int> intOut ( cout , "\n" );

   // Standard iterator interface for writing
   // elements to the output stream
   cout << "Elements written to output stream:" << endl;
*intOut = 10;
   intOut++;      // No effect on iterator position
*intOut = 20;
*intOut = 30;
}
/* Output:
Elements written to output stream:
10
20
30
*/

ostream_iterator::operator++

Operador de incremento no funcional que devuelve un objeto ostream_iterator al mismo objeto que señalaba antes de que se llamara a la operación.

ostream_iterator<Type, CharType, Traits>& operator++();
ostream_iterator<Type, CharType, Traits> operator++(int);

Valor devuelto

Una referencia a ostream_iterator.

Comentarios

Estos operadores miembro devuelven *this.

Ejemplo

// ostream_iterator_op_incr.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;

   // ostream_iterator for stream cout
   // with new line delimiter
   ostream_iterator<int> intOut ( cout , "\n" );

   // standard iterator interface for writing
   // elements to the output stream
   cout << "Elements written to output stream:" << endl;
*intOut = 10;
   intOut++;      // No effect on iterator position
*intOut = 20;
*intOut = 30;
}
/* Output:
Elements written to output stream:
10
20
30
*/

ostream_iterator::operator=

Operador de asignación que se usa para implementar la expresión output_iterator * i = x para escribir en un flujo de salida.

ostream_iterator<Type, CharType, Traits>& operator=(const Type& val);

Parámetros

val
El valor del objeto de tipo Type que se va a insertar en el flujo de salida.

Valor devuelto

El operador inserta val en el flujo de salida asociado al objeto, seguido del delimitador especificado en el constructor ostream_iterator (si existe) y, después, devuelve una referencia al ostream_iterator.

Comentarios

Los requisitos para un iterador de salida que ostream_iterator debe satisfacer solo requieren que la expresión * ii = t sea válida y no indique nada sobre operator u operator= on por cuenta propia. Este operador miembro devuelve *this.

Ejemplo

// ostream_iterator_op_assign.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;

   // ostream_iterator for stream cout
   // with new line delimiter
   ostream_iterator<int> intOut ( cout , "\n" );

   // Standard iterator interface for writing
   // elements to the output stream
   cout << "Elements written to output stream:" << endl;
*intOut = 10;
   intOut++;      // No effect on iterator position
*intOut = 20;
*intOut = 30;
}
/* Output:
Elements written to output stream:
10
20
30
*/

ostream_iterator::ostream_iterator

Construye una clase ostream_iterator que se inicializa y delimita para escribir caracteres en el flujo de salida.

ostream_iterator(
    ostream_type& _Ostr);

ostream_iterator(
    ostream_type& _Ostr,
    const CharType* _Delimiter);

Parámetros

_Ostr
El flujo de salida de tipo ostream_iterator::ostream_type que se va a repetir.

_Delimiter
El delimitador que se inserta en el flujo de salida entre valores.

Comentarios

El primer constructor inicializa el puntero del flujo de salida con &_Ostr. El puntero de la cadena de delimitador designa una cadena vacía.

El segundo constructor inicializa el puntero del flujo de salida con &_Ostr y el puntero de la cadena del delimitador con _Delimiter.

Ejemplo

// ostream_iterator_ostream_iterator.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;

   // ostream_iterator for stream cout
   ostream_iterator<int> intOut ( cout , "\n" );
*intOut = 10;
   intOut++;
*intOut = 20;
   intOut++;

   int i;
   vector<int> vec;
   for ( i = 1 ; i < 7 ; ++i )
   {
      vec.push_back (  i );
   }

   // Write elements to standard output stream
   cout << "Elements output without delimiter: ";
   copy ( vec.begin ( ), vec.end ( ),
          ostream_iterator<int> ( cout ) );
   cout << endl;

   // Write elements with delimiter " : " to output stream
   cout << "Elements output with delimiter: ";
   copy ( vec.begin ( ), vec.end ( ),
          ostream_iterator<int> ( cout, " : " ) );
   cout << endl;
}
/* Output:
10
20
Elements output without delimiter: 123456
Elements output with delimiter: 1 : 2 : 3 : 4 : 5 : 6 :
*/

ostream_iterator::ostream_type

Un tipo que proporciona el tipo de secuencia del iterador.

typedef basic_ostream<CharType, Traits> ostream_type;

Comentarios

El tipo es un sinónimo de basic_ostream<CharType, Traits>, una clase de secuencia de la jerarquía iostream que define objetos que pueden usarse para escribir.

Ejemplo

Vea ostream_iterator para obtener un ejemplo de cómo declarar y usar ostream_type.

ostream_iterator::traits_type

Un tipo que proporciona el tipo de rasgos de los caracteres del iterador.

typedef Traits traits_type;

Comentarios

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

Ejemplo

// ostream_iterator_traits_type.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;

   // The following not OK, but are just the default values:
   typedef ostream_iterator<int>::char_type CHT1;
   typedef ostream_iterator<int>::traits_type CHTR1;

   // ostream_iterator for stream cout
   // with new line delimiter:
    ostream_iterator<int, CHT1, CHTR1> intOut ( cout , "\n" );

   // Standard iterator interface for writing
   // elements to the output stream:
   cout << "The integers written to output stream\n"
        << "by intOut are:" << endl;
*intOut = 1;
*intOut = 10;
*intOut = 100;
}
/* Output:
The integers written to output stream
by intOut are:
1
10
100
*/

Vea también

<iterator>
Seguridad para subprocesos en la biblioteca estándar de C++
Referencia de biblioteca estándar de C++