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 char
carattere .
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++