istreambuf_iterator, classe
Le modèle de classe istreambuf_iterator décrit un objet itérateur d’entrée qui extrait des éléments caractères d’une mémoire tampon de flux d’entrée, auquel il accède via un objet qu’il stocke, du pointeur de type vers basic_streambuf
<CharType, Traits.>
Syntaxe
template <class CharType class Traits = char_traits <CharType>>
class istreambuf_iterator
: public iterator<input_iterator_tag, CharType, typename Traits ::off_type, CharType*, CharType&>
Paramètres
CharType
Type qui représente le type de caractère pour istreambuf_iterator.
Caractéristiques
Type qui représente le type de caractère pour istreambuf_iterator. Cet argument est facultatif et la valeur par défaut est char_traits
<CharType.>
Notes
La classe istreambuf_iterator doit répondre aux exigences d’un itérateur d’entrée.
Après avoir construit ou incrémenté un objet de classe istreambuf_iterator avec un pointeur stocké non null, l’objet tente d’extraire et de stocker un objet de type CharType à partir du flux d’entrée associé. Toutefois, l’extraction peut être retardée jusqu’à ce que l’objet soit déréférencement ou copié. Si l'extraction échoue, l'objet remplace le pointeur stocké par un pointeur null, créant ainsi un indicateur de fin de séquence.
Constructeurs
Constructeur | Description |
---|---|
istreambuf_iterator | Construit un istreambuf_iterator qui est initialisé pour lire des caractères à partir du flux d'entrée. |
Typedefs
Nom de type | Description |
---|---|
char_type | Type qui fournit le type de caractère de ostreambuf_iterator . |
int_type | Type qui fournit un type entier pour un istreambuf_iterator . |
istream_type | Type qui fournit le type de flux de istream_iterator . |
streambuf_type | Type qui fournit le type de flux de istreambuf_iterator . |
traits_type | Type qui fournit le type de caractéristique de istream_iterator . |
Fonctions Membre
Fonction membre | Description |
---|---|
equal | Vérifie l'égalité de deux itérateurs de tampon de flux d'entrée. |
Opérateurs
Opérateur | Description |
---|---|
operator* | L'opérateur de suppression de référence retourne le caractère suivant du flux. |
operator++ | Retourne le caractère suivant du flux d'entrée ou copie l'objet avant de l'incrémenter et de retourner sa copie. |
Spécifications
Header :<iterator>
Espace de noms : std
istreambuf_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
// istreambuf_iterator_char_type.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
#include <algorithm>
int main( )
{
using namespace std;
typedef istreambuf_iterator<char>::char_type CHT1;
typedef istreambuf_iterator<char>::traits_type CHTR1;
cout << "(Try the example: 'So many dots to be done'\n"
<< " then an Enter key to insert into the output,\n"
<< " & use a ctrl-Z Enter key combination to exit): ";
// istreambuf_iterator for input stream
istreambuf_iterator< CHT1, CHTR1> charInBuf ( cin );
ostreambuf_iterator<char> charOut ( cout );
// Used in conjunction with replace_copy algorithm
// to insert into output stream and replace spaces
// with dot-separators
replace_copy ( charInBuf , istreambuf_iterator<char>( ),
charOut , ' ' , '.' );
}
istreambuf_iterator ::equal
Teste l’équivalence de deux itérateurs de mémoire tampon de flux d’entrée.
bool equal(const istreambuf_iterator<CharType, Traits>& right) const;
Paramètres
right
Itérateur pour lequel vérifier l’égalité.
Valeur de retour
true
si les deux sont des itérateurs de fin de flux ou si aucun des deux istreambuf_iterator
n’est un itérateur de fin de flux ; sinon false
.
Notes
Une plage est définie par la istreambuf_iterator
position actuelle et l’itérateur de fin de flux, mais étant donné que tous les itérateurs de flux non-de-fin sont équivalents sous la equal
fonction membre, il n’est pas possible de définir des sous-plages à l’aide istreambuf_iterator
de s. Les opérateurs ==
et !=
ont la même sémantique.
Exemple
// istreambuf_iterator_equal.cpp
// compile with: /EHsc
#include <iterator>
#include <iostream>
int main( )
{
using namespace std;
cout << "(Try the example: 'Hello world!'\n"
<< " then an Enter key to insert into the output,\n"
<< " & use a ctrl-Z Enter key combination to exit): ";
istreambuf_iterator<char> charReadIn1 ( cin );
istreambuf_iterator<char> charReadIn2 ( cin );
bool b1 = charReadIn1.equal ( charReadIn2 );
if (b1)
cout << "The iterators are equal." << endl;
else
cout << "The iterators are not equal." << endl;
}
istreambuf_iterator ::int_type
Type qui fournit un type entier pour un istreambuf_iterator
.
typedef typename traits_type::int_type int_type;
Notes
Le type est un synonyme de Traits::int_type
.
Exemple
// istreambuf_iterator_int_type.cpp
// compile with: /EHsc
#include <iterator>
#include <iostream>
int main( )
{
using namespace std;
istreambuf_iterator<char>::int_type inttype1 = 100;
cout << "The inttype1 = " << inttype1 << "." << endl;
}
/* Output:
The inttype1 = 100.
*/
istreambuf_iterator ::istream_type
Type qui fournit le type de flux de istreambuf_iterator
.
typedef basic_istream<CharType, Traits> istream_type;
Notes
Le type est un synonyme de basic_istream
<CharType, Traits>.
Exemple
Pour découvrir comment déclarer et utiliser istream_type
, consultez l’exemple relatif à istreambuf_iterator.
istreambuf_iterator ::istreambuf_iterator
Construit un istreambuf_iterator qui est initialisé pour lire des caractères à partir du flux d’entrée.
istreambuf_iterator(streambuf_type* strbuf = 0) throw();
istreambuf_iterator(istream_type& _Istr) throw();
Paramètres
strbuf
Mémoire tampon de flux d’entrée à laquelle le istreambuf_iterator
est attaché.
_Istr
Flux d’entrée auquel le istreambuf_iterator
est attaché.
Notes
Le premier constructeur initialise le pointeur de mémoire tampon de flux d’entrée avec strbuf. Le deuxième constructeur initialise le pointeur de mémoire tampon de flux d’entrée avec _Istr. rdbuf
, puis tente ensuite d’extraire et de stocker un objet de type CharType
.
Exemple
// istreambuf_iterator_istreambuf_iterator.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <algorithm>
#include <iostream>
int main( )
{
using namespace std;
// Following declarations will not compile:
istreambuf_iterator<char>::istream_type &istrm = cin;
istreambuf_iterator<char>::streambuf_type *strmbf = cin.rdbuf( );
cout << "(Try the example: 'Oh what a world!'\n"
<< " then an Enter key to insert into the output,\n"
<< " & use a ctrl-Z Enter key combination to exit): ";
istreambuf_iterator<char> charReadIn ( cin );
ostreambuf_iterator<char> charOut ( cout );
// Used in conjunction with replace_copy algorithm
// to insert into output stream and replace spaces
// with hyphen-separators
replace_copy ( charReadIn , istreambuf_iterator<char>( ),
charOut , ' ' , '-' );
}
istreambuf_iterator ::operator*
L'opérateur de suppression de référence retourne le caractère suivant du flux.
CharType operator*() const;
Valeur de retour
Caractère suivant dans le flux.
Exemple
// istreambuf_iterator_operator_deref.cpp
// compile with: /EHsc
#include <iterator>
#include <iostream>
int main( )
{
using namespace std;
cout << "Type string of characters & enter to output it,\n"
<< " with stream buffer iterators,(try: 'I'll be back.')\n"
<< " repeat as many times as desired,\n"
<< " then keystroke ctrl-Z Enter to exit program: ";
istreambuf_iterator<char> inpos ( cin );
istreambuf_iterator<char> endpos;
ostreambuf_iterator<char> outpos ( cout );
while ( inpos != endpos )
{
*outpos = *inpos; //Put value of outpos equal to inpos
++inpos;
++outpos;
}
}
istreambuf_iterator ::operator++
Retourne le caractère suivant du flux d'entrée ou copie l'objet avant de l'incrémenter et de retourner sa copie.
istreambuf_iterator<CharType, Traits>& operator++();
istreambuf_iterator<CharType, Traits> operator++(int);
Valeur de retour
istreambuf_iterator
ou une référence à un istreambuf_iterator
.
Notes
Le premier opérateur tente finalement d’extraire et de stocker un objet de type CharType
à partir du flux d’entrée associé. Le deuxième opérateur effectue une copie de l’objet, incrémente l’objet, puis retourne la copie.
Exemple
// istreambuf_iterator_operator_incr.cpp
// compile with: /EHsc
#include <iterator>
#include <iostream>
int main( )
{
using namespace std;
cout << "Type string of characters & enter to output it,\n"
<< " with stream buffer iterators,(try: 'I'll be back.')\n"
<< " repeat as many times as desired,\n"
<< " then keystroke ctrl-Z Enter to exit program: ";
istreambuf_iterator<char> inpos ( cin );
istreambuf_iterator<char> endpos;
ostreambuf_iterator<char> outpos ( cout );
while ( inpos != endpos )
{
*outpos = *inpos;
++inpos; //Increment istreambuf_iterator
++outpos;
}
}
istreambuf_iterator ::streambuf_type
Type qui fournit le type de flux de istreambuf_iterator.
typedef basic_streambuf<CharType, Traits> streambuf_type;
Notes
Le type est un synonyme de basic_streambuf
<CharType, Traits>.
Exemple
Pour découvrir comment déclarer et utiliser istreambuf_type
, consultez l’exemple relatif à istreambuf_iterator.
istreambuf_iterator ::traits_type
Type qui fournit le type de caractéristique de istream_iterator
.
typedef Traits traits_type;
Notes
Le type est un synonyme du paramètre de modèle Traits.
Exemple
// istreambuf_iterator_traits_type.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
#include <algorithm>
int main( )
{
using namespace std;
typedef istreambuf_iterator<char>::char_type CHT1;
typedef istreambuf_iterator<char>::traits_type CHTR1;
cout << "(Try the example: 'So many dots to be done'\n"
<< " then an Enter key to insert into the output,\n"
<< " & use a ctrl-Z Enter key combination to exit): ";
// istreambuf_iterator for input stream
istreambuf_iterator< CHT1, CHTR1> charInBuf ( cin );
ostreambuf_iterator<char> charOut ( cout );
// Used in conjunction with replace_copy algorithm
// to insert into output stream and replace spaces
// with dot-separators
replace_copy ( charInBuf , istreambuf_iterator<char>( ),
charOut , ' ' , '.' );
}
Voir aussi
iterator, struct
<iterator>
Sécurité des threads dans la bibliothèque C++ Standard
Informations de référence sur la bibliothèque standard C++