Partager via


ostream_iterator, classe

Le modèle de classe ostream_iterator décrit un objet itérateur de sortie qui écrit des éléments successifs dans le flux de sortie avec l’extraction operator <<.

Syntaxe

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

Paramètres

Type
Type d'objet à insérer dans le flux de sortie.

CharType
Type qui représente le type de caractère de ostream_iterator. Cet argument est facultatif et sa valeur par défaut est char.

Caractéristiques
Type qui représente le type de caractère de ostream_iterator. Cet argument est facultatif et la valeur par défaut est char_traits<CharType.>

La classe ostream_iterator doit répondre aux exigences d’un itérateur de sortie. Les algorithmes peuvent être enregistrés directement dans le flux de sortie à l'aide de ostream_iterator.

Constructeurs

Constructeur Description
ostream_iterator Construit un ostream_iterator qui est initialisé et délimité en vue de son enregistrement dans le flux de sortie.

Typedefs

Nom de type Description
char_type Type qui fournit le type de caractère de ostream_iterator.
ostream_type Type qui fournit le type de flux de ostream_iterator.
traits_type Type qui fournit le type de caractéristique de ostream_iterator.

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 ostream_iterator au même objet qu'il a traité avant que l'opération n'ait été appelée.
operator= Opérateur d’assignation utilisé pour implémenter l’expression d’itérateur de sortie * i = x en vue de l’écriture dans un flux de sortie.

Spécifications

Header :<iterator>

Espace de noms : std

ostream_iterator ::char_type

Type qui fournit le type de caractère de l’itérateur.

typedef CharType char_type;

Notes

Le type est un synonyme du paramètre de modèle CharType.

Exemple

// ostream_iterator_char_type.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;

   typedef ostream_iterator<int>::char_type CHT1;
   typedef ostream_iterator<int>::traits_type CHTR1;

   // ostream_iterator for stream cout
   // with new line delimiter:
    ostream_iterator<int, CHT1, CHTR1> intOut ( cout , "\n" );

   // Standard iterator interface for writing
   // elements to the output stream:
   cout << "The integers written to the output stream\n"
        << "by intOut are:" << endl;
*intOut = 10;
*intOut = 20;
*intOut = 30;
}
/* Output:
The integers written to the output stream
by intOut are:
10
20
30
*/

ostream_iterator ::operator*

Opérateur de déreferencing utilisé pour implémenter l’expression itérateur de sortie * ii = x.

ostream_iterator<Type, CharType, Traits>& operator*();

Valeur de retour

Référence à ostream_iterator.

Notes

Les exigences d’un itérateur de sortie que le ostream_iterator doit satisfaire nécessitent uniquement l’expression * ii = n’est pas valide et ne dit rien sur le ou sur operator operator= leur propre. L’opérateur membre dans cette implémentation retourne *this.

Exemple

// ostream_iterator_op_deref.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;

   // ostream_iterator for stream cout
   // with new line delimiter
   ostream_iterator<int> intOut ( cout , "\n" );

   // Standard iterator interface for writing
   // elements to the output stream
   cout << "Elements written to output stream:" << endl;
*intOut = 10;
   intOut++;      // No effect on iterator position
*intOut = 20;
*intOut = 30;
}
/* Output:
Elements written to output stream:
10
20
30
*/

ostream_iterator ::operator++

Opérateur d'incrément non fonctionnel qui retourne un ostream_iterator au même objet qu'il a traité avant que l'opération n'ait été appelée.

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

Valeur de retour

Référence à ostream_iterator.

Notes

Ces opérateurs membres retournent *thistous les deux .

Exemple

// ostream_iterator_op_incr.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;

   // ostream_iterator for stream cout
   // with new line delimiter
   ostream_iterator<int> intOut ( cout , "\n" );

   // standard iterator interface for writing
   // elements to the output stream
   cout << "Elements written to output stream:" << endl;
*intOut = 10;
   intOut++;      // No effect on iterator position
*intOut = 20;
*intOut = 30;
}
/* Output:
Elements written to output stream:
10
20
30
*/

ostream_iterator ::operator=

Opérateur d’assignation utilisé pour implémenter l’expression d’itérateur de sortie * i = x en vue de l’écriture dans un flux de sortie.

ostream_iterator<Type, CharType, Traits>& operator=(const Type& val);

Paramètres

val
Valeur de l’objet de type Type à insérer dans le flux de sortie.

Valeur de retour

L’opérateur insère val dans le flux de sortie associé à l’objet, suivi du délimiteur spécifié dans le constructeur ostream_iterator (le cas échéant), puis retourne une référence à l’objet ostream_iterator.

Notes

La seule condition que doit remplir l’itérateur de sortie ostream_iterator est que l’expression * ii = t soit valide. Il n’y a pas de condition spécifiée pour operator ou operator= proprement dit. Cet opérateur membre retourne *this.

Exemple

// ostream_iterator_op_assign.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;

   // ostream_iterator for stream cout
   // with new line delimiter
   ostream_iterator<int> intOut ( cout , "\n" );

   // Standard iterator interface for writing
   // elements to the output stream
   cout << "Elements written to output stream:" << endl;
*intOut = 10;
   intOut++;      // No effect on iterator position
*intOut = 20;
*intOut = 30;
}
/* Output:
Elements written to output stream:
10
20
30
*/

ostream_iterator ::ostream_iterator

Construit un ostream_iterator qui est initialisé et délimité en vue de son enregistrement dans le flux de sortie.

ostream_iterator(
    ostream_type& _Ostr);

ostream_iterator(
    ostream_type& _Ostr,
    const CharType* _Delimiter);

Paramètres

_Ostr
Flux de sortie de type ostream_iterator::ostream_type devant être itéré.

_Délimiteur
Délimiteur qui est inséré dans le flux de sortie entre les valeurs.

Notes

Le premier constructeur initialise le pointeur de flux de sortie avec &_Ostr. Le pointeur de chaîne de délimiteur désigne une chaîne vide.

Le deuxième constructeur initialise le pointeur de flux de sortie avec &_Ostr et le pointeur de chaîne de délimiteur avec _Delimiter.

Exemple

// ostream_iterator_ostream_iterator.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;

   // ostream_iterator for stream cout
   ostream_iterator<int> intOut ( cout , "\n" );
*intOut = 10;
   intOut++;
*intOut = 20;
   intOut++;

   int i;
   vector<int> vec;
   for ( i = 1 ; i < 7 ; ++i )
   {
      vec.push_back (  i );
   }

   // Write elements to standard output stream
   cout << "Elements output without delimiter: ";
   copy ( vec.begin ( ), vec.end ( ),
          ostream_iterator<int> ( cout ) );
   cout << endl;

   // Write elements with delimiter " : " to output stream
   cout << "Elements output with delimiter: ";
   copy ( vec.begin ( ), vec.end ( ),
          ostream_iterator<int> ( cout, " : " ) );
   cout << endl;
}
/* Output:
10
20
Elements output without delimiter: 123456
Elements output with delimiter: 1 : 2 : 3 : 4 : 5 : 6 :
*/

ostream_iterator ::ostream_type

Type qui fournit le type de flux de l’itérateur.

typedef basic_ostream<CharType, Traits> ostream_type;

Notes

Le type est un synonyme de basic_ostreamCharType<, Traits>une classe de flux de la hiérarchie iostream qui définit les objets qui peuvent être utilisés pour l’écriture.

Exemple

Pour savoir comment déclarer et utiliser ostream_type, consultez l’exemple ostream_iterator.

ostream_iterator ::traits_type

Type qui fournit le type des caractéristiques de caractère de l’itérateur.

typedef Traits traits_type;

Notes

Le type est un synonyme du paramètre de modèle Traits.

Exemple

// ostream_iterator_traits_type.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;

   // The following not OK, but are just the default values:
   typedef ostream_iterator<int>::char_type CHT1;
   typedef ostream_iterator<int>::traits_type CHTR1;

   // ostream_iterator for stream cout
   // with new line delimiter:
    ostream_iterator<int, CHT1, CHTR1> intOut ( cout , "\n" );

   // Standard iterator interface for writing
   // elements to the output stream:
   cout << "The integers written to output stream\n"
        << "by intOut are:" << endl;
*intOut = 1;
*intOut = 10;
*intOut = 100;
}
/* Output:
The integers written to output stream
by intOut are:
1
10
100
*/

Voir aussi

<iterator>
Sécurité des threads dans la bibliothèque C++ Standard
Informations de référence sur la bibliothèque standard C++