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_iterator
róż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 CharType
szablonu .
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 char
znakó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 Traits
szablonu .
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++