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 *this
tous 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++