Класс

Шаблон класса описывает объект выходного итератора, который записывает последовательные символьные элементы в выходной поток с извлечением . Они отличаются от класса в наличии символов вместо универсального типа в типе объекта, вставленного в выходной поток.

Синтаксис

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

Параметры

CharType
Тип, представляющий тип символа для ostreambuf_iterator. Этот аргумент является необязательным, и значением по умолчанию является .

Traits
Тип, представляющий тип символа для ostreambuf_iterator. Этот аргумент является необязательным, и значением по умолчанию является .

Замечания

Класс ostreambuf_iterator должен удовлетворять требованиям для итератора вывода. Алгоритмы можно записывать непосредственно в потоки вывода с помощью . Данный класс предоставляет итератор потока низкого уровня, обеспечивающий доступ к необработанному (неотформатированному) потоку ввода-вывода в форме символов, а также возможность обхода буферизации и преобразования символов, связанных с итераторами потоков высокого уровня.

Конструкторы

Конструктор Description
ostreambuf_iterator Создает итератор , инициализированный для записи символов в поток вывода.

Определения типов

Введите имя Description
char_type Тип, обеспечивающий тип символа для .
ostream_type Тип, обеспечивающий тип потока для .
streambuf_type Тип, обеспечивающий тип потока для .
traits_type Тип, обеспечивающий тип признаков символа для .

Функции элементов

Функция-член Description
failed Проверяет наличие ошибок вставки в буфер потока вывода.

Операторы

Operator Description
operator* Оператор dereferencing, используемый для реализации выражения выходного итератора.
operator++ Нефункциональный оператор инкремента, возвращающий , обращающийся к тому же объекту, к которому он обращался до вызова операции.
operator= Данный оператор вставляет символ в соответствующий буфер потока.

Требования

Заголовок:

Пространство имен:

ostreambuf_iterator::char_type

Тип, обеспечивающий тип символа для .

typedef CharType char_type;

Замечания

Этот тип является синонимом для параметра шаблона .

Пример

// 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;
}
OUT.

ostreambuf_iterator::failed

Проверяет наличие ошибок вставки в буфер потока вывода.

bool failed() const throw();

Возвращаемое значение

Значение , если вставка в буфер выходного потока не выполнена ранее; в противном случае .

Замечания

Функция-член возвращается в случае неудачной попытки вставить символ в буфер выходного потока.

Пример

// 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;
}
abc are characters output individually.
No insertions failed.

ostreambuf_iterator::operator*

Нефункциональный оператор dereferencing, используемый для реализации выражения выходного итератора.

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

Возвращаемое значение

Объект-итератор 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';
}
Elements written to output stream:
OUT

ostreambuf_iterator::operator++

Нефункциональный оператор добавочного инкремента, который возвращает тот же символ, который он обратился перед вызовом операции.

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

Возвращаемое значение

Ссылка на символ, первоначально адресованный или определяемый реализацией объект, в который можно преобразовать.

Замечания

Оператор используется для реализации выражения выходного итератора.

Пример

// 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';
}
Elements written to output stream:
OUT

ostreambuf_iterator::operator=

Данный оператор вставляет символ в соответствующий буфер потока.

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

Параметры

_Char
Символ для вставки в буфер потока.

Возвращаемое значение

Ссылка на символ, вставленный в буфер потока.

Замечания

Оператор назначения, используемый для реализации выражения выходного итератора для записи в выходной поток.

Пример

// 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';
}
Elements written to output stream:
OUT

ostreambuf_iterator::ostreambuf_iterator

Создает итератор , инициализированный для записи символов в поток вывода.

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

Параметры

strbuf
Выходной объект streambuf, используемый для инициализации указателя буфера потока вывода.

Ostr
Выходной объект stream, используемый для инициализации указателя буфера потока вывода.

Замечания

Первый конструктор инициализирует указатель выходного буфера потока с помощью .

Второй конструктор инициализирует указатель выходного потока-буфера с помощью *. Сохраненный указатель не должен быть пустым указателем (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 );
}
OUT are characters output individually.
These characters are being written to the output stream.

ostreambuf_iterator::ostream_type

Тип, обеспечивающий тип потока для .

typedef basicOstream<CharType, Traits> ostream_type;

Замечания

Тип является синонимом для

Пример

Пример объявления и использования .

ostreambuf_iterator::streambuf_type

Тип, обеспечивающий тип потока для .

typedef basic_streambuf<CharType, Traits> streambuf_type;

Замечания

Тип является синонимом , класс потока для буферов ввода-вывода, который становится , когда используется для типа символов.

Пример

Пример объявления и использования .

ostreambuf_iterator::traits_type

Тип, обеспечивающий тип признаков символа для .

typedef Traits traits_type;

Замечания

Этот тип является синонимом для параметра шаблона .

Пример

// 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;
}
The characters written to the output stream
by charOutBuf are: OUT.

См. также

Итератор
Потокобезопасность в стандартной библиотеке C++
Справочник по стандартной библиотеке C++