Třída ostreambuf_iterator
Šablona třídy ostreambuf_iterator popisuje výstupní objekt iterátoru, který zapisuje následné prvky znaků do výstupního datového proudu pomocí operátoru>> extrakce. Liší ostreambuf_iterator
se od těch, které ostream_iterator Třída mají znaky místo obecného typu v typu objektu, který se vkládá do výstupního datového proudu.
Syntaxe
template <class CharType = char class Traits = char_traits <CharType>>
Parametry
CharType
Typ, který představuje typ znaku pro ostreambuf_iterator. Tento argument je nepovinný a výchozí hodnota je char
.
Rysy
Typ, který představuje typ znaku pro ostreambuf_iterator. Tento argument je nepovinný a výchozí hodnota je char_traits
<CharType.>
Poznámky
Třída ostreambuf_iterator musí splňovat požadavky na výstupní iterátor. Algoritmy lze zapisovat přímo do výstupních datových proudů pomocí .ostreambuf_iterator
Třída poskytuje iterátor datového proudu na nízké úrovni, který umožňuje přístup k nezpracovanému (neformátovanému) proudu dat ve formě znaků a schopnost obejít ukládání do vyrovnávací paměti a překlady znaků spojené s iterátory datového proudu vysoké úrovně.
Konstruktory
Konstruktor | Popis |
---|---|
ostreambuf_iterator | ostreambuf_iterator Vytvoří inicializovaný objekt pro zápis znaků do výstupního datového proudu. |
Typedefs
Název typu | Popis |
---|---|
char_type | Typ, který poskytuje typ znaku ostreambuf_iterator . |
ostream_type | Typ, který poskytuje typ datového ostream_iterator proudu . |
streambuf_type | Typ, který poskytuje typ datového ostreambuf_iterator proudu . |
traits_type | Typ, který poskytuje typ znakových ostream_iterator vlastností . |
Členské funkce
Členová funkce | Popis |
---|---|
neúspěšný | Ověřuje selhání vložení do vyrovnávací paměti výstupního datového proudu. |
Operátory
Operátor | Popis |
---|---|
operátor* | Operátor dereferencing použitý k implementaci výstupního výrazu iterátoru * i = x . |
operator++ | Nefunkční inkrementační operátor, který vrací stejný ostreambuf_iterator objekt, který byl vyřešen před zavolání operace. |
operator= | Operátor vloží znak do přidružené vyrovnávací paměti datového proudu. |
Požadavky
Header:<iterator>
Obor názvů: std
ostreambuf_iterator::char_type
Typ, který poskytuje typ znaku ostreambuf_iterator
.
typedef CharType char_type;
Poznámky
Typ je synonymem pro parametr CharType
šablony .
Příklad
// 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
Ověřuje selhání vložení do vyrovnávací paměti výstupního datového proudu.
bool failed() const throw();
Návratová hodnota
true
pokud do vyrovnávací paměti výstupního datového proudu nedošlo dříve k chybě vložení; jinak false
.
Poznámky
Členová funkce vrátí true
, pokud v jakémkoli předchozím použití členu operator=
volání subf_->sputc
vrácen eof.
Příklad
// 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*
Nonfunctional dereferencing operator used to implement the output iterator expression * i = x.
ostreambuf_iterator<CharType, Traits>& operator*();
Návratová hodnota
Objekt iterátoru ostreambuf.
Poznámky
Tento operátor funguje pouze ve výstupním výrazu iterátoru * i = x pro výstupní znaky pro vyrovnávací paměť datového proudu. Použije se na iterátor ostreambuf, vrátí iterátor; *iter vrátí iter,
Příklad
// 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++
Nefunkční operátor přírůstku, který vrátí ostreamový iterátor na stejný znak, který byl vyřešen před zavolání operace.
ostreambuf_iterator<CharType, Traits>& operator++();
ostreambuf_iterator<CharType, Traits>& operator++(int);
Návratová hodnota
Odkaz na znak původně adresovaný nebo na objekt definovaný implementací, který je konvertibilní na ostreambuf_iterator
<CharType, Traits.>
Poznámky
Operátor se používá k implementaci výstupního výrazu iterátoru * i = x.
Příklad
// 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=
Operátor vloží znak do přidružené vyrovnávací paměti datového proudu.
ostreambuf_iterator<CharType, Traits>& operator=(CharType _Char);
Parametry
_Uklízečka
Znak, který se má vložit do vyrovnávací paměti datového proudu.
Návratová hodnota
Odkaz na znak vložený do vyrovnávací paměti datového proudu.
Poznámky
Operátor přiřazení použitý k implementaci výstupního výrazu iterátoru * i = x pro zápis do výstupního datového proudu.
Příklad
// 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
ostreambuf_iterator
Vytvoří inicializovaný objekt pro zápis znaků do výstupního datového proudu.
ostreambuf_iterator(streambuf_type* strbuf) throw();
ostreambuf_iterator(ostream_type& Ostr) throw();
Parametry
strbuf
Výstupní objekt streambuf použitý k inicializaci výstupního ukazatele vyrovnávací paměti datového proudu.
Ostr
Výstupní objekt streamu použitý k inicializaci výstupního ukazatele vyrovnávací paměti datového proudu.
Poznámky
První konstruktor inicializuje výstupní ukazatel vyrovnávací paměti datového proudu pomocí strbuf.
Druhý konstruktor inicializuje výstupní stream-buffer ukazatel s Ostr
. rdbuf
. Uložený ukazatel nesmí být nulovým ukazatelem.
Příklad
// 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, který poskytuje typ datového ostream_iterator
proudu .
typedef basicOstream<CharType, Traits> ostream_type;
Poznámky
Typ je synonymem pro basicOstream
<CharType, Traits. >
Příklad
Příklad deklarace a použití ostream_type
najdete v ostreambuf_iterator .
ostreambuf_iterator::streambuf_type
Typ, který poskytuje typ datového ostreambuf_iterator
proudu .
typedef basic_streambuf<CharType, Traits> streambuf_type;
Poznámky
Typ je synonymem pro basic_streambuf
<CharType, Traits>, třídu streamu pro vstupně-výstupní vyrovnávací paměti, která se stane, když se streambuf
specializují na typ char
znaku .
Příklad
Příklad deklarace a použití streambuf_type
najdete v ostreambuf_iterator .
ostreambuf_iterator::traits_type
Typ, který poskytuje typ znakových ostream_iterator
vlastností .
typedef Traits traits_type;
Poznámky
Typ je synonymem pro parametr Traits
šablony .
Příklad
// 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.
*/
Viz také
<iterátor>
Bezpečný přístup z více vláken ve standardní knihovně C++
Standardní knihovna C++ – referenční dokumentace