Udostępnij za pośrednictwem


ostream_iterator — Klasa

Szablon klasy ostream_iterator opisuje obiekt iteratora wyjściowego, który zapisuje kolejne elementy w strumieniu wyjściowym za pomocą wyodrębniania operator <<.

Składnia

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

Parametry

Type
Typ obiektu, który ma zostać wstawiony do strumienia wyjściowego.

Typ char
Typ reprezentujący typ znaku dla elementu ostream_iterator. Ten argument jest opcjonalny, a wartość domyślna to char.

Cechy
Typ reprezentujący typ znaku dla elementu ostream_iterator. Ten argument jest opcjonalny, a wartość domyślna to char_traits<CharType.>

Klasa ostream_iterator musi spełniać wymagania dla iteratora wyjściowego. Algorytmy można zapisywać bezpośrednio w strumieniach wyjściowych przy użyciu elementu ostream_iterator.

Konstruktory

Konstruktor opis
ostream_iterator Tworzy obiekt ostream_iterator , który jest inicjowany i rozdzielany do zapisu w strumieniu wyjściowym.

Typedefs

Nazwa typu opis
char_type Typ, który zapewnia typ znaku .ostream_iterator
ostream_type Typ, który zapewnia typ strumienia klasy ostream_iterator.
traits_type Typ, który zapewnia typ cech znaków klasy ostream_iterator.

Operatory

Operator opis
operator* Operator dereferencing używany do implementowania wyrażenia iteratora wyjściowego * i = x.
operator++ Niefunkcjonalny operator inkrementacji, który zwraca obiekt do tego samego obiektu, który ostream_iterator został rozwiązany przed wywołaniem operacji.
operator = Operator przypisania używany do implementowania wyrażenia iteratora wyjściowego * i = x na potrzeby zapisywania w strumieniu wyjściowym.

Wymagania

Nagłówek:<iterator>

Przestrzeń nazw: std

ostream_iterator::char_type

Typ, który zapewnia typ znaku iteratora.

typedef CharType char_type;

Uwagi

Typ jest synonimem parametru CharTypeszablonu .

Przykład

// 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*

Operator dereferencing używany do implementowania wyrażenia iteratora wyjściowego * ii = x.

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

Wartość zwracana

Odwołanie do .ostream_iterator

Uwagi

Wymagania iteratora wyjściowego, które ostream_iterator muszą spełniać, wymagają tylko wyrażenia * ii = nie są prawidłowe i nie mówi nic o operator lub operator= na własną rękę. Operator elementu członkowskiego w tej implementacji zwraca wartość *this.

Przykład

// 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++

Niefunkcjonalny operator inkrementacji, który zwraca obiekt do tego samego obiektu, który ostream_iterator został rozwiązany przed wywołaniem operacji.

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

Wartość zwracana

Odwołanie do .ostream_iterator

Uwagi

Oba te operatory składowe zwracają wartość *this.

Przykład

// 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=

Operator przypisania używany do implementowania wyrażenia output_iterator * i = x do zapisywania w strumieniu wyjściowym.

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

Parametry

Val
Wartość obiektu typu Type , który ma zostać wstawiony do strumienia wyjściowego.

Wartość zwracana

Operator wstawia wartość do strumienia wyjściowego skojarzonego z obiektem, a następnie ogranicznik określony w konstruktorze ostream_iterator (jeśli istnieje), a następnie zwraca odwołanie do ostream_iteratorobiektu .

Uwagi

Wymagania iteratora danych wyjściowych, które ostream_iterator muszą spełniać, wymagają tylko wyrażenia * ii = t jest prawidłowe i nic nie mówi o operatorze lub operatorze = na własną rękę. Ten operator elementu członkowskiego zwraca wartość *this.

Przykład

// 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

Tworzy obiekt ostream_iterator , który jest inicjowany i rozdzielany do zapisu w strumieniu wyjściowym.

ostream_iterator(
    ostream_type& _Ostr);

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

Parametry

_Ostr
Strumień wyjściowy typu ostream_iterator::ostream_type do iterated.

_Ogranicznik
Ogranicznik wstawiony do strumienia wyjściowego między wartościami.

Uwagi

Pierwszy konstruktor inicjuje wskaźnik strumienia wyjściowego za pomocą polecenia &_Ostr. Wskaźnik ciągu ogranicznika wyznacza pusty ciąg.

Drugi konstruktor inicjuje wskaźnik strumienia wyjściowego i &_Ostr wskaźnik ciągu ogranicznika z _Delimiter.

Przykład

// 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

Typ, który zapewnia typ strumienia iteratora.

typedef basic_ostream<CharType, Traits> ostream_type;

Uwagi

Typ jest synonimem basic_ostreamCharType<, Traits>, klasy strumienia hierarchii iostream, która definiuje obiekty, których można użyć do pisania.

Przykład

Zobacz ostream_iterator , aby zapoznać się z przykładem sposobu deklarowania i używania elementu ostream_type.

ostream_iterator::traits_type

Typ, który zapewnia typ cech znaków iteratora.

typedef Traits traits_type;

Uwagi

Typ jest synonimem parametru Traitsszablonu .

Przykład

// 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
*/

Zobacz też

<Sterująca>
Bezpieczeństwo wątku w standardowej bibliotece C++
Dokumentacja standardowej biblioteki C++