Condividi tramite


Classe ostreambuf_iterator

Il modello di classe ostreambuf_iterator descrive un oggetto iteratore di output che scrive elementi carattere successivi nel flusso di output con l'operatore>> di estrazione. Gli oggetti ostreambuf_iterator differiscono da quelli della classe ostream_iterator per il fatto che hanno caratteri anziché un tipo generico in corrispondenza del tipo di oggetto inserito nel flusso di output.

Sintassi

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

Parametri

CharType
Tipo che rappresenta il tipo di carattere per ostreambuf_iterator. Questo argomento è facoltativo e il valore predefinito è char.

Tratti
Tipo che rappresenta il tipo di carattere per ostreambuf_iterator. Questo argomento è facoltativo e il valore predefinito è char_traits<CharType.>

Osservazioni:

La classe ostreambuf_iterator deve soddisfare i requisiti per un iteratore di output. Gli algoritmi possono essere scritti direttamente nei flussi di output utilizzando un ostreambuf_iterator. La classe fornisce un iteratore del flusso di basso livello che consente l'accesso al flusso I/O non elaborato (non formattato) sotto forma di caratteri e la possibilità di ignorare le conversioni dei caratteri e del buffer associate agli iteratori del flusso di alto livello.

Costruttori

Costruttore Descrizione
ostreambuf_iterator Costruisce un ostreambuf_iterator inizializzato per scrivere i caratteri nel flusso di output.

Typedef

Nome tipo Descrizione
char_type Tipo che fornisce il tipo di carattere di ostreambuf_iterator.
ostream_type Tipo che fornisce il tipo di flusso di ostream_iterator.
streambuf_type Tipo che fornisce il tipo di flusso di ostreambuf_iterator.
traits_type Tipo che fornisce il tipo di tratti di ostream_iterator.

Funzioni membro

Funzione membro Descrizione
failed Verifica l'esito negativo di un inserimento nel buffer del flusso di output.

Operatori

Operatore Descrizione
operator* Operatore di dereferenziazione usato per implementare l'espressione dell'iteratore di output * i = x.
operator++ Operatore di incremento non funzionale che restituisce ostreambuf_iterator allo stesso oggetto a cui ha puntato prima che venisse chiamata l'operazione.
operator= L'operatore inserisce un carattere nel buffer del flusso associato.

Requisiti

Header:<iterator>

Spazio dei nomi: std

ostreambuf_iterator::char_type

Tipo che fornisce il tipo di carattere di ostreambuf_iterator.

typedef CharType char_type;

Osservazioni:

Il tipo è un sinonimo del parametro di modello CharType.

Esempio

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

Verifica l'esito negativo di un inserimento nel buffer del flusso di output.

bool failed() const throw();

Valore restituito

true se in precedenza non è stato eseguito alcun inserimento nel buffer del flusso di output; in caso contrario false, .

Osservazioni:

La funzione membro restituisce true se, in qualsiasi uso precedente del membro operator=, la chiamata a subf_->sputc restituito eof.

Esempio

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

Operatore di dereferenziazione non funzionale usato per implementare l'espressione dell'iteratore di output * i = x.

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

Valore restituito

Oggetto iteratore ostreambuf.

Osservazioni:

Questo operatore funziona solo nell'espressione dell'iteratore di output * i = x per restituire i caratteri nel buffer di flusso. Applicato a un iteratore ostreambuf, restituisce l'iteratore; *iter restituisce iter,

Esempio

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

Operatore di incremento non funzionale che restituisce un iteratore ostream allo stesso carattere a cui puntava prima che venisse chiamata l'operazione.

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

Valore restituito

Riferimento al carattere originariamente indirizzato o a un oggetto definito dall'implementazione convertibile in ostreambuf_iterator<CharType, Traits>.

Osservazioni:

L'operatore viene usato per implementare l'espressione dell'iteratore di output * i = x.

Esempio

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

L'operatore inserisce un carattere nel buffer del flusso associato.

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

Parametri

_Char
Carattere da inserire nel buffer del flusso.

Valore restituito

Riferimento al carattere inserito nel buffer del flusso.

Osservazioni:

Operatore di assegnazione usato per implementare l'espressione dell'iteratore di output * i = x per la scrittura in un flusso di output.

Esempio

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

Costruisce un ostreambuf_iterator inizializzato per scrivere i caratteri nel flusso di output.

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

Parametri

strbuf
Oggetto streambuf di output usato per inizializzare il puntatore del buffer del flusso di output.

Ostr
Oggetto del flusso di output usato per inizializzare il puntatore del buffer del flusso di output.

Osservazioni:

Il primo costruttore inizializza il puntatore del buffer del flusso di output con strbuf.

Il secondo costruttore inizializza il puntatore del buffer del flusso di output con Ostr. rdbuf. Il puntatore archiviato non deve essere un puntatore null.

Esempio

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

Tipo che fornisce il tipo di flusso di ostream_iterator.

typedef basicOstream<CharType, Traits> ostream_type;

Osservazioni:

Il tipo è un sinonimo di basicOstream<CharType, Traits>

Esempio

Vedere ostreambuf_iterator per indicazioni su come dichiarare e usare ostream_type.

ostreambuf_iterator::streambuf_type

Tipo che fornisce il tipo di flusso di ostreambuf_iterator.

typedef basic_streambuf<CharType, Traits> streambuf_type;

Osservazioni:

Il tipo è un sinonimo di basic_streambuf<CharType, Traits>, una classe di flusso per i buffer di I/O che diventa streambuf quando specializzato nel tipo di charcarattere .

Esempio

Vedere ostreambuf_iterator per indicazioni su come dichiarare e usare streambuf_type.

ostreambuf_iterator::traits_type

Tipo che fornisce il tipo di tratti di ostream_iterator.

typedef Traits traits_type;

Osservazioni:

Il tipo è un sinonimo del parametro di modello Traits.

Esempio

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

Vedi anche

<iterator>
Thread Safety in the C++ Standard Library (Sicurezza dei thread nella libreria standard C++)
Informazioni di riferimento per la libreria standard C++