Partage via


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