Udostępnij za pośrednictwem


Klasa ostreambuf_iterator

Szablon klasy ostreambuf_iterator opisuje obiekt iteratora wyjściowego, który zapisuje kolejne elementy znaków na strumieniu wyjściowym za pomocą operatora>> wyodrębniania. Wartości ostreambuf_iteratorróżnią się od tych z klasy ostream_iterator o znakach zamiast typu ogólnego w typie obiektu wstawianego do strumienia wyjściowego.

Składnia

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

Parametry

Typ char
Typ, który reprezentuje typ znaków dla ostreambuf_iterator. Ten argument jest opcjonalny, a wartość domyślna to char.

Cechy
Typ, który reprezentuje typ znaków dla ostreambuf_iterator. Ten argument jest opcjonalny, a wartość domyślna to char_traits<CharType.>

Uwagi

Klasa ostreambuf_iterator musi spełniać wymagania dla iteratora wyjściowego. Algorytmy można zapisywać bezpośrednio w strumieniach wyjściowych przy użyciu elementu ostreambuf_iterator. Klasa oferuje iterator strumienia niskiego poziomu, który umożliwia dostęp do surowego (niesformatowanego) strumienia we/wy w postaci znaków, a także możliwość ominięcia etapu buforowania i tłumaczenia znaków związanych z iteratorami strumienia wysokiego poziomu.

Konstruktory

Konstruktor opis
ostreambuf_iterator Tworzy element ostreambuf_iterator , który jest inicjowany do zapisywania znaków w strumieniu wyjściowym.

Typedefs

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

Funkcje składowe

Funkcja składowa opis
Nie powiodło się Testuje pod kątem błędu wstawiania do bufora strumienia wyjściowego.

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 ostreambuf_iterator został rozwiązany przed wywołaniem operacji.
operator = Operator wstawia znak do bufora skojarzonego strumienia.

Wymagania

Nagłówek:<iterator>

Przestrzeń nazw: std

ostreambuf_iterator::char_type

Typ, który zapewnia typ znaku .ostreambuf_iterator

typedef CharType char_type;

Uwagi

Typ jest synonimem parametru CharTypeszablonu .

Przykład

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

int main( )
{
   using namespace std;

   typedef ostreambuf_iterator<char>::char_type CHT1;
   typedef ostreambuf_iterator<char>::traits_type CHTR1;

   // ostreambuf_iterator for stream cout
   // with new line delimiter:
    ostreambuf_iterator< CHT1, CHTR1> charOutBuf ( cout );

   // Standard iterator interface for writing
   // elements to the output streambuf:
   cout << "The characters written to the output stream\n"
        << " by charOutBuf are: ";
*charOutBuf = 'O';
   charOutBuf++;
*charOutBuf = 'U';
   charOutBuf++;
*charOutBuf = 'T';
   charOutBuf++;
   cout << "." << endl;
}
/* Output:
The characters written to the output stream
by charOutBuf are: OUT.
*/

ostreambuf_iterator::failed

Testuje pod kątem błędu wstawiania do bufora strumienia wyjściowego.

bool failed() const throw();

Wartość zwracana

true jeśli żadne wstawienie do buforu strumienia wyjściowego nie powiodło się wcześniej; w przeciwnym razie false.

Uwagi

Funkcja składowa zwraca true wartość , jeśli w poprzednim użyciu elementu członkowskiego operator=wywołanie funkcji subf_->sputc zwróciło wartość eof.

Przykład

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

int main( )
{
   using namespace std;

   // ostreambuf_iterator for stream cout
   ostreambuf_iterator<char> charOut ( cout );

*charOut = 'a';
   charOut ++;
*charOut  = 'b';
   charOut ++;
*charOut = 'c';
   cout << " are characters output individually." << endl;

   bool b1 = charOut.failed ( );
   if (b1)
       cout << "At least one insertion failed." << endl;
   else
       cout << "No insertions failed." << endl;
}
/* Output:
abc are characters output individually.
No insertions failed.
*/

ostreambuf_iterator::operator*

Niefunkcjonalny operator dereferencing używany do implementowania wyrażenia iteratora wyjściowego * i = x.

ostreambuf_iterator<CharType, Traits>& operator*();

Wartość zwracana

Obiekt iteratora ostreambuf.

Uwagi

Ten operator działa tylko w wyrażeniu iteratora wyjściowego * i = x do znaków wyjściowych do buforu strumienia. Zastosowano do iteratora ostreambuf, zwraca iterator; *iter zwraca iter,

Przykład

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

int main( )
{
   using namespace std;

   // ostreambuf_iterator for stream cout
   // with new line delimiter
   ostreambuf_iterator<char> charOutBuf ( cout );

   // Standard iterator interface for writing
   // elements to the output stream
   cout << "Elements written to output stream:" << endl;
*charOutBuf = 'O';
   charOutBuf++;   // no effect on iterator position
*charOutBuf = 'U';
*charOutBuf = 'T';
}
/* Output:
Elements written to output stream:
OUT
*/

ostreambuf_iterator::operator++

Niefunkcjonalny operator inkrementacji, który zwraca iterator ostream do tego samego znaku, który został rozwiązany przed wywołaniem operacji.

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

Wartość zwracana

Odwołanie do znaku pierwotnie skierowanego lub do obiektu zdefiniowanego przez implementację, który jest konwertowany na ostreambuf_iterator<CharType, Traits.>

Uwagi

Operator służy do implementowania wyrażenia iteratora wyjściowego * i = x.

Przykład

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

int main( )
{
   using namespace std;

   // ostreambuf_iterator for stream cout
   // with new line delimiter
   ostreambuf_iterator<char> charOutBuf ( cout );

   // Standard iterator interface for writing
   // elements to the output stream
   cout << "Elements written to output stream:" << endl;
*charOutBuf = 'O';
   charOutBuf++;      // No effect on iterator position
*charOutBuf = 'U';
*charOutBuf = 'T';
}
/* Output:
Elements written to output stream:
OUT
*/

ostreambuf_iterator::operator=

Operator wstawia znak do bufora skojarzonego strumienia.

ostreambuf_iterator<CharType, Traits>& operator=(CharType _Char);

Parametry

_Char
Znak, który ma zostać wstawiony do buforu strumienia.

Wartość zwracana

Odwołanie do znaku wstawionego do buforu strumienia.

Uwagi

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

Przykład

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

int main( )
{
   using namespace std;

   // ostreambuf_iterator for stream cout
   // with new line delimiter
   ostreambuf_iterator<char> charOutBuf ( cout );

   // Standard iterator interface for writing
   // elements to the output stream
   cout << "Elements written to output stream:" << endl;
*charOutBuf = 'O';
   charOutBuf++;      // No effect on iterator position
*charOutBuf = 'U';
*charOutBuf = 'T';
}
/* Output:
Elements written to output stream:
OUT
*/

ostreambuf_iterator::ostreambuf_iterator

Tworzy element ostreambuf_iterator , który jest inicjowany do zapisywania znaków w strumieniu wyjściowym.

ostreambuf_iterator(streambuf_type* strbuf) throw();
ostreambuf_iterator(ostream_type& Ostr) throw();

Parametry

strbuf
Obiekt streambuf wyjściowy używany do inicjowania wskaźnika strumienia-buforu wyjściowego.

Ostr
Obiekt strumienia wyjściowego używany do inicjowania wskaźnika buforu strumienia wyjściowego.

Uwagi

Pierwszy konstruktor inicjuje wskaźnik strumienia-bufora wyjściowego ze strbufem.

Drugi konstruktor inicjuje wskaźnik strumienia-bufora wyjściowego za pomocą polecenia Ostr. rdbuf. Przechowywany wskaźnik nie może być wskaźnikiem o wartości null.

Przykład

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

int main( )
{
   using namespace std;

   // ostreambuf_iterator for stream cout
   ostreambuf_iterator<char> charOut ( cout );

*charOut = 'O';
   charOut ++;
*charOut  = 'U';
   charOut ++;
*charOut = 'T';
   cout << " are characters output individually." << endl;

   ostreambuf_iterator<char> strOut ( cout );
   string str = "These characters are being written to the output stream.\n ";
   copy ( str.begin ( ), str. end ( ), strOut );
}
/* Output:
OUT are characters output individually.
These characters are being written to the output stream.
*/

ostreambuf_iterator::ostream_type

Typ, który zapewnia typ strumienia klasy ostream_iterator.

typedef basicOstream<CharType, Traits> ostream_type;

Uwagi

Typ jest synonimem CharTypebasicOstream<, Traits >

Przykład

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

ostreambuf_iterator::streambuf_type

Typ, który zapewnia typ strumienia klasy ostreambuf_iterator.

typedef basic_streambuf<CharType, Traits> streambuf_type;

Uwagi

Typ jest synonimem basic_streambuf<CharType, Traits>, klasy strumienia we/wy, które stają się, gdy specjalizuje się streambuf w typie charznaków .

Przykład

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

ostreambuf_iterator::traits_type

Typ, który zapewnia typ cech znaków klasy ostream_iterator.

typedef Traits traits_type;

Uwagi

Typ jest synonimem parametru Traitsszablonu .

Przykład

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

int main( )
{
   using namespace std;

   typedef ostreambuf_iterator<char>::char_type CHT1;
   typedef ostreambuf_iterator<char>::traits_type CHTR1;

   // ostreambuf_iterator for stream cout
   // with new line delimiter:
    ostreambuf_iterator< CHT1, CHTR1> charOutBuf ( cout );

   // Standard iterator interface for writing
   // elements to the output streambuf:
   cout << "The characters written to the output stream\n"
        << " by charOutBuf are: ";
*charOutBuf = 'O';
   charOutBuf++;
*charOutBuf = 'U';
   charOutBuf++;
*charOutBuf = 'T';
   charOutBuf++;
   cout << "." << endl;
}
/* Output:
The characters written to the output stream
by charOutBuf are: OUT.
*/

Zobacz też

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