Classe ostreambuf_iterator

A classe de modelo ostreambuf_iterator descreve um objeto de iterador de saída que grava elementos de caractere sucessivos no fluxo de saída com a extração operator>>. As ostreambuf_iterators são diferentes da Classe ostream_iterator por terem caracteres em vez de um tipo genérico no tipo de objeto que está sendo inserido no fluxo de saída.

Sintaxe

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

Parâmetros

CharType
O tipo que representa o tipo de caractere para ostreambuf_iterator. Esse argumento é opcional e o valor padrão é char.

Características
O tipo que representa o tipo de caractere para ostreambuf_iterator. Esse argumento é opcional e o valor padrão é char_traits<CharType>.

Comentários

A classe ostreambuf_iterator deve atender aos requisitos de um iterador de saída. Os algoritmos podem ser gravados diretamente nos fluxos de saída usando um ostreambuf_iterator. A classe fornece um iterador de fluxo de nível baixo que permite acesso ao fluxo de E/S bruto (não formatado) na forma de caracteres e a capacidade de ignorar o buffer e as conversões de caracteres associadas aos iteradores de fluxo de nível alto.

Construtores

Construtor Descrição
ostreambuf_iterator Constrói uma ostreambuf_iterator que é inicializada para gravar caracteres no fluxo de saída.

Typedefs

Nome do tipo Descrição
char_type Um tipo que é fornecido para o tipo de caractere do ostreambuf_iterator.
ostream_type Um tipo que é fornecido para o tipo de fluxo da ostream_iterator.
streambuf_type Um tipo que é fornecido para o tipo de fluxo da ostreambuf_iterator.
traits_type Um tipo que fornece o tipo de característica do caractere da ostream_iterator.

Funções de membro

Função de membro Descrição
failed Testa a falha de uma inserção no buffer do fluxo de saída.

Operadores

Operador Descrição
operator* Operador de desreferenciamento usado para implementar a expressão do iterador de saída * i = x.
operador++ Um operador de incremento não funcional que retorna uma ostreambuf_iterator para o mesmo objeto que foi tratado antes de a operação ser chamada.
operator= O operador insere um caractere no buffer do fluxo associado.

Requisitos

Cabeçalho:<iterator>

Namespace: std

ostreambuf_iterator::char_type

Um tipo que é fornecido para o tipo de caractere do ostreambuf_iterator.

typedef CharType char_type;

Comentários

O tipo é um sinônimo do parâmetro de modeloCharType.

Exemplo

// 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::falhou

Testa a falha de uma inserção no buffer do fluxo de saída.

bool failed() const throw();

Valor de retorno

true se nenhuma inserção no buffer de fluxo de saída falhou anteriormente; caso contrário, false.

Comentários

A função de membro retorna true se, em qualquer uso anterior do membro operator=, a chamada para subf_->sputc retornou eof.

Exemplo

// 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::operador*

Um operador de desreferenciamento não funcional usado para implementar a expressão do iterador de saída * i = x.

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

Valor de retorno

O objeto do iterador ostreambuf.

Comentários

Este operador funciona apenas na expressão do iterador de saída * i = x para gerar caracteres de saída para o buffer de fluxo. Aplicado a um iterador ostreambuf, ele retorna o iterador; *iter retorna iter,

Exemplo

// 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::operador++

Um operador de incremento não funcional que retorna um iterador ostream para o mesmo caractere que foi tratado antes de a operação ser chamada.

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

Valor de retorno

Uma referência ao caractere originalmente resolvido ou a um objeto definido pela implementação que pode ser convertido em ostreambuf_iterator<CharType, Traits>.

Comentários

O operador usado para implementar a expressão do iterador de saída * i = x.

Exemplo

// 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=

O operador insere um caractere no buffer do fluxo associado.

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

Parâmetros

_Char
O caractere a ser inserido no buffer de fluxo.

Valor de retorno

Uma referência para o caractere inserido no buffer de fluxo.

Comentários

O operador de atribuição usado para implementar a expressão do iterador de saída *i = x para gravação em um fluxo de saída.

Exemplo

// 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

Constrói uma ostreambuf_iterator que é inicializada para gravar caracteres no fluxo de saída.

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

Parâmetros

strbuf
O objeto de streambuf de saída usado para inicializar o ponteiro de buffer do fluxo de saída.

Ostr
O objeto do fluxo de saída usado para inicializar o ponteiro de buffer do fluxo de saída.

Comentários

O primeiro construtor inicializa o ponteiro do buffer de fluxo de saída com strbuf.

O segundo construtor inicializa o ponteiro do buffer de fluxo de saída com Ostr. rdbuf. O ponteiro armazenado não deve ser um ponteiro nulo.

Exemplo

// 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

Um tipo que é fornecido para o tipo de fluxo da ostream_iterator.

typedef basicOstream<CharType, Traits> ostream_type;

Comentários

O tipo é um sinônimo de basicOstream<CharType, Traits>

Exemplo

Consulte ostreambuf_iterator para ver um exemplo de como declarar e usar ostream_type.

ostreambuf_iterator::streambuf_type

Um tipo que é fornecido para o tipo de fluxo da ostreambuf_iterator.

typedef basic_streambuf<CharType, Traits> streambuf_type;

Comentários

O tipo é sinônimo de basic_streambuf<CharType, Traits>, uma classe de fluxo para buffers de E/S que se torna streambuf quando especializada no tipo de caractere char.

Exemplo

Consulte ostreambuf_iterator para ver um exemplo de como declarar e usar streambuf_type.

ostreambuf_iterator::traits_type

Um tipo que fornece o tipo de característica do caractere da ostream_iterator.

typedef Traits traits_type;

Comentários

O tipo é um sinônimo do parâmetro de modeloTraits.

Exemplo

// 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.
*/

Confira também

<iterator>
Acesso Thread-Safe na Biblioteca Padrão C++
Referência da biblioteca padrão C++