Класс ostreambuf_iterator
Шаблон класса ostreambuf_iterator описывает объект выходного итератора, который записывает последовательные символьные элементы в выходной поток с оператором>> извлечения. ostreambuf_iterator
отличаются от таковых класса ostream_iterator тем, что используют символы вместо универсального типа для типа объекта, вставляемого в поток вывода.
Синтаксис
template <class CharType = char class Traits = char_traits <CharType>>
Параметры
CharType
Тип, представляющий тип символа для ostreambuf_iterator. Этот аргумент является необязательным, и значением по умолчанию является char
.
Признаки
Тип, представляющий тип символа для ostreambuf_iterator. Этот аргумент является необязательным, а значение по умолчанию — char_traits
<CharType.>
Замечания
Класс ostreambuf_iterator должен удовлетворять требованиям для итератора вывода. Алгоритмы можно записывать непосредственно в потоки вывода с помощью ostreambuf_iterator
. Данный класс предоставляет итератор потока низкого уровня, обеспечивающий доступ к необработанному (неотформатированному) потоку ввода-вывода в форме символов, а также возможность обхода буферизации и преобразования символов, связанных с итераторами потоков высокого уровня.
Конструкторы
Конструктор | Description |
---|---|
ostreambuf_iterator | Создает итератор ostreambuf_iterator , инициализированный для записи символов в поток вывода. |
Определения типов
Введите имя | Description |
---|---|
char_type | Тип, обеспечивающий тип символа для ostreambuf_iterator . |
ostream_type | Тип, обеспечивающий тип потока для ostream_iterator . |
streambuf_type | Тип, обеспечивающий тип потока для ostreambuf_iterator . |
traits_type | Тип, обеспечивающий тип признаков символа для ostream_iterator . |
Функции элементов
Функция-член | Description |
---|---|
failed | Проверяет наличие ошибок вставки в буфер потока вывода. |
Операторы
Operator | Description |
---|---|
operator* | Оператор разыменования, используемый для реализации выражения итератора вывода * i = x . |
оператор++ | Нефункциональный оператор инкремента, возвращающий ostreambuf_iterator , обращающийся к тому же объекту, к которому он обращался до вызова операции. |
operator= | Данный оператор вставляет символ в соответствующий буфер потока. |
Требования
Заголовок:<итератор>
Пространство имен: std
ostreambuf_iterator::char_type
Тип, обеспечивающий тип символа для ostreambuf_iterator
.
typedef CharType char_type;
Замечания
Этот тип является синонимом для параметра шаблона CharType
.
Пример
// 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
Проверяет наличие ошибок вставки в буфер потока вывода.
bool failed() const throw();
Возвращаемое значение
true
Значение , если вставка в буфер выходного потока не выполнена ранее; в противном случае false
.
Замечания
Функция-член возвращаетсяtrue
, если при предыдущем использовании элемента operator=
вызов subf_-sputc
> возвращает eof.
Пример
// 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*
Нефункциональный оператор dereferencing, используемый для реализации выражения выходного итератора * i = x.
ostreambuf_iterator<CharType, Traits>& operator*();
Возвращаемое значение
Объект-итератор ostreambuf.
Замечания
Этот оператор работает только в выражении выходного итератора * i = x для вывода символов в буфер потоковой передачи. Применяется к итератору ostreambuf, он возвращает итератор; *итер возвращает итер,
Пример
// 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++
Нефункциональный оператор приращения, который возвращает итератор ostream, обращающийся к тому же символу, к которому он обращался до вызова операции.
ostreambuf_iterator<CharType, Traits>& operator++();
ostreambuf_iterator<CharType, Traits>& operator++(int);
Возвращаемое значение
Ссылка на символ, первоначально адресованный или определяемый реализацией объект, который преобразуется в ostreambuf_iterator
<CharType, Traits.>
Замечания
Оператор используется для реализации выражения итератора выходных данных * i = x.
Пример
// 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=
Данный оператор вставляет символ в соответствующий буфер потока.
ostreambuf_iterator<CharType, Traits>& operator=(CharType _Char);
Параметры
_Обугливать
Символ для вставки в буфер потока.
Возвращаемое значение
Ссылка на символ, вставленный в буфер потока.
Замечания
Оператор назначения, используемый для реализации выражения итератора выходных данных * i = x для записи в выходной поток.
Пример
// 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
, инициализированный для записи символов в поток вывода.
ostreambuf_iterator(streambuf_type* strbuf) throw();
ostreambuf_iterator(ostream_type& Ostr) throw();
Параметры
strbuf
Выходной объект streambuf, используемый для инициализации указателя буфера потока вывода.
Ostr
Выходной объект stream, используемый для инициализации указателя буфера потока вывода.
Замечания
Первый конструктор инициализирует указатель выходного потока-буфера с помощью strbuf.
Второй конструктор инициализирует указатель буфера потока вывода значением Ostr
. rdbuf
. Сохраненный указатель не должен быть пустым указателем (NULL).
Пример
// 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
Тип, обеспечивающий тип потока для ostream_iterator
.
typedef basicOstream<CharType, Traits> ostream_type;
Замечания
Тип является синонимом для basicOstream
<CharType, Traits>
Пример
См. раздел ostreambuf_iterator с примером объявления и использования ostream_type
.
ostreambuf_iterator::streambuf_type
Тип, обеспечивающий тип потока для ostreambuf_iterator
.
typedef basic_streambuf<CharType, Traits> streambuf_type;
Замечания
Тип является синонимом basic_streambuf
<CharType, Traits>, класса потока для буферов ввода-вывода, которые становятся streambuf
при использовании типа символов.char
Пример
См. раздел ostreambuf_iterator с примером объявления и использования streambuf_type
.
ostreambuf_iterator::traits_type
Тип, обеспечивающий тип признаков символа для ostream_iterator
.
typedef Traits traits_type;
Замечания
Этот тип является синонимом для параметра шаблона Traits
.
Пример
// 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.
*/
См. также
<iterator>
Потокобезопасность в стандартной библиотеке C++
Справочник по стандартной библиотеке C++