ostreambuf_iterator
Le modèle de classe ostreambuf_iterator décrit un objet itérateur de sortie qui écrit des éléments caractères successifs dans le flux de sortie avec l’opérateur>> d’extraction. Les objets ostreambuf_iterator
diffèrent de ceux de la classe ostream_iterator, car ils présentent des caractères à la place d’un type générique dans le type d’objet inséré dans le flux de sortie.
Syntaxe
template <class CharType = char class Traits = char_traits <CharType>>
Paramètres
CharType
Type qui représente le type de caractère pour l'objet ostreambuf_iterator. Cet argument est facultatif et sa valeur par défaut est char
.
Caractéristiques
Type qui représente le type de caractère pour l'objet ostreambuf_iterator. Cet argument est facultatif et la valeur par défaut est char_traits
<CharType.>
Notes
La classe ostreambuf_iterator doit être conforme aux exigences d’un itérateur de sortie. Les algorithmes peuvent être enregistrés directement dans le flux de sortie à l'aide de ostreambuf_iterator
. La classe fournit un itérateur de flux de bas niveau qui permet l'accès au flux d'E/S brut (sans mise en forme) sous la forme de caractères et permet de contourner la mise en mémoire tampon et les traductions de caractères associées aux itérateurs de flux de haut niveau.
Constructeurs
Constructeur | Description |
---|---|
ostreambuf_iterator | Construit un objet ostreambuf_iterator initialisé pour enregistrer des caractères dans le flux de sortie. |
Typedefs
Nom de type | Description |
---|---|
char_type | Type qui fournit le type de caractère de ostreambuf_iterator . |
ostream_type | Type qui fournit le type de flux de ostream_iterator . |
streambuf_type | Type qui fournit le type de flux de ostreambuf_iterator . |
traits_type | Type qui fournit le type de caractéristique de ostream_iterator . |
Fonctions Membre
Fonction membre | Description |
---|---|
échec | Teste l'échec d'une insertion dans la mémoire tampon du flux de sortie. |
Opérateurs
Opérateur | Description |
---|---|
operator* | Opérateur de suppression de référence utilisé pour implémenter l’expression d’itérateur de sortie * i = x . |
operator++ | Opérateur d'incrément non fonctionnel qui retourne un ostreambuf_iterator au même objet qu'il a traité avant que l'opération n'ait été appelée. |
operator= | L'opérateur insère un caractère dans la mémoire tampon du flux associé. |
Spécifications
Header :<iterator>
Espace de noms : std
ostreambuf_iterator ::char_type
Type qui fournit le type de caractère de ostreambuf_iterator
.
typedef CharType char_type;
Notes
Le type est un synonyme du paramètre de modèle CharType
.
Exemple
// 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
Teste l'échec d'une insertion dans la mémoire tampon du flux de sortie.
bool failed() const throw();
Valeur de retour
true
si aucune insertion dans la mémoire tampon de flux de sortie n’a échoué précédemment ; sinon false
.
Notes
La fonction membre retourne true
si, dans une utilisation antérieure du membre operator=
, l’appel à subf_->sputc
retourné eof.
Exemple
// 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*
Opérateur de déreferencing nonfunctionnel utilisé pour implémenter l’expression itérateur de sortie * i = x.
ostreambuf_iterator<CharType, Traits>& operator*();
Valeur de retour
Objet itérateur ostreambuf.
Notes
Cet opérateur fonctionne uniquement dans l’expression d’itérateur de sortie * i = x pour générer des caractères dans la mémoire tampon de flux. Appliqué à un itérateur ostreambuf, il retourne l’itérateur ; *iter retourne iter,
Exemple
// 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++
Opérateur d’incrémentation non fonctionnel qui retourne un itérateur ostream au même caractère qu’il a traité avant l’appel de l’opération.
ostreambuf_iterator<CharType, Traits>& operator++();
ostreambuf_iterator<CharType, Traits>& operator++(int);
Valeur de retour
Référence au caractère initialement traité ou à un objet défini par l’implémentation qui est convertible en ostreambuf_iterator
<CharType, Traits.>
Notes
L’opérateur est utilisé pour implémenter l’expression itérateur de sortie * i = x.
Exemple
// 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'opérateur insère un caractère dans la mémoire tampon du flux associé.
ostreambuf_iterator<CharType, Traits>& operator=(CharType _Char);
Paramètres
_Carboniser
Caractère à insérer dans la mémoire tampon du flux.
Valeur de retour
Référence au caractère inséré dans la mémoire tampon du flux.
Notes
Opérateur d’affectation utilisé pour implémenter l’expression itérateur de sortie * i = x pour l’écriture dans un flux de sortie.
Exemple
// 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
Construit un objet ostreambuf_iterator
initialisé pour enregistrer des caractères dans le flux de sortie.
ostreambuf_iterator(streambuf_type* strbuf) throw();
ostreambuf_iterator(ostream_type& Ostr) throw();
Paramètres
strbuf
Objet de sortie streambuf utilisé pour initialiser le pointeur de mémoire tampon du flux de sortie.
Ostr
Objet de sortie stream pour initialiser le pointeur de mémoire tampon du flux de sortie.
Notes
Le premier constructeur initialise le pointeur de mémoire tampon de flux de sortie avec strbuf.
Le deuxième constructeur initialise le pointeur de mémoire tampon du flux de sortie avec Ostr
. rdbuf
. Le pointeur stocké ne doit pas être un pointeur null.
Exemple
// 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
Type qui fournit le type de flux de ostream_iterator
.
typedef basicOstream<CharType, Traits> ostream_type;
Notes
Le type est un synonyme de basicOstream
<CharType, Traits>
Exemple
Pour savoir comment déclarer et utiliser ostream_type
, consultez l’exemple ostreambuf_iterator.
ostreambuf_iterator ::streambuf_type
Type qui fournit le type de flux de ostreambuf_iterator
.
typedef basic_streambuf<CharType, Traits> streambuf_type;
Notes
Le type est un synonyme de basic_streambuf
<CharType, Traits>, une classe de flux pour les mémoires tampons d’E/S qui devient lorsqu’elle est streambuf
spécialisée dans le type de caractèrechar
.
Exemple
Pour savoir comment déclarer et utiliser streambuf_type
, consultez l’exemple ostreambuf_iterator.
ostreambuf_iterator ::traits_type
Type qui fournit le type de caractéristique de ostream_iterator
.
typedef Traits traits_type;
Notes
Le type est un synonyme du paramètre de modèle Traits
.
Exemple
// 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.
*/
Voir aussi
<iterator>
Sécurité des threads dans la bibliothèque C++ Standard
Informations de référence sur la bibliothèque standard C++