operator>>(std::basic_istream)
De fr.cppreference.net
| Défini dans l'en-tête <istream>
|
||
template< class CharT, class Traits >
basic_istream<CharT, Traits>&
operator>>( basic_istream<CharT, Traits>& st, CharT& ch );
template< class Traits >
basic_istream<char, Traits>&
operator>>( basic_istream<char, Traits>& st, signed char& ch );
template< class Traits >
basic_istream<char, Traits>&
operator>>( basic_istream<char, Traits>& st, unsigned char& ch );
|
(1) | |
template< class CharT, class Traits>
basic_istream<CharT, Traits>&
operator>>( basic_istream<CharT, Traits>& st, CharT* s );
template< class Traits >
basic_istream<char, Traits>&
operator>>( basic_istream<char, Traits>& st, signed char* s );
template< class Traits >
basic_istream<char, Traits>&
operator>>( basic_istream<char, Traits>& st, unsigned char* s );
|
(2) | (jusqu'à C++20) |
template< class CharT, class Traits, std::size_t N >
basic_istream<CharT, Traits>&
operator>>( basic_istream<CharT, Traits>& st, CharT (&s)[N] );
template< class Traits, std::size_t N >
basic_istream<char, Traits>&
operator>>( basic_istream<char, Traits>& st, signed char (&s)[N] );
template< class Traits, std::size_t N >
basic_istream<char, Traits>&
operator>>( basic_istream<char, Traits>& st, unsigned char (&s)[N] );
|
(depuis C++20) | |
template< class Istream, class T >
Istream&&
operator>>( Istream&& st, T&& value );
|
(3) | (depuis C++11) |
1,2) Effectue des opérations d'entrée de caractères.
1) Se comporte comme un FormattedInputFunction. Après avoir construit et vérifié l'objet sentinelle, qui peut ignorer les espaces blancs initiaux, extrait un caractère et le stocke dans
ch. Si aucun caractère n'est disponible, positionne failbit (en plus de eofbit qui est positionné comme requis par une FormattedInputFunction).2) Se comporte comme un FormattedInputFunction. Après avoir construit et vérifié l'objet sentinelle, qui peut ignorer les espaces blancs initiaux, extrait des caractères successifs et les stocke à des emplacements successifs de un tableau de caractères dont le premier élément est pointé par(jusqu'à C++20)
s. L'extraction s'arrête si l'une des conditions suivantes est remplie :
- Un caractère d'espacement (tel que déterminé par la facette ctype<CharT> ) est trouvé. Le caractère d'espacement n'est pas extrait.
|
(jusqu'à C++20) |
|
(depuis C++20) |
- La fin du fichier se produit dans la séquence d'entrée (cela positionne également eofbit).
CharT() est stockée à la fin de la sortie. Si aucun caractère n'a été extrait, positionne failbit (le caractère nul est quand même écrit, à la première position dans la sortie). Enfin, appelle st.width(0) pour annuler les effets de std::setw, le cas échéant.3) Appelle l'opérateur d'extraction approprié, étant donné une référence rvalue vers un objet flux d'entrée (équivalent à
st >> std::forward<T>(value)). Cette surcharge participe à la résolution de surcharge uniquement si st >> std::forward<T>(value) est bien formé et Istream est un type de classe dérivé publiquement et sans ambiguïté de std::ios_base.Notes
L'extraction d'un seul caractère qui est le dernier caractère du flux ne définit pas
eofbit
: ceci diffère des autres fonctions d'entrée formatées, telles que l'extraction du dernier entier avec
operator
>>
, mais ce comportement correspond au comportement de
std::scanf
avec
"%c"
comme spécificateur de format.
Paramètres
| st | - | flux d'entrée depuis lequel extraire les données |
| ch | - | référence vers un caractère pour stocker le caractère extrait |
| s | - | pointeur vers (jusqu'à C++20) un tableau de caractères pour stocker les caractères extraits |
Valeur de retour
1,2)
st
3)
std
::
move
(
st
)
Exemple
Exécuter ce code
#include <iomanip> #include <iostream> #include <sstream> int main() { std::string input = "n greetings"; std::istringstream stream(input); char c; const int MAX = 6; char cstr[MAX]; stream >> c >> std::setw(MAX) >> cstr; std::cout << "c = " << c << '\n' << "cstr = " << cstr << '\n'; double f; std::istringstream("1.23") >> f; // rvalue stream extraction std::cout << "f = " << f << '\n'; }
Sortie :
c = n cstr = greet f = 1.23
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 13 | C++98 | la définition de n mentionnait un nom inexistant eos | remplacé par CharT ( ) |
| LWG 68 | C++98 | aucun caractère nul n'était stocké à la fin de la sortie pour la surcharge (2) | stocke un caractère nul |
| LWG 1203 | C++98 | la surcharge pour le flux rvalue retournait une référence lvalue vers la classe de base |
retourne une référence rvalue
vers la classe dérivée |
| LWG 2328 | C++98 | la surcharge pour le flux rvalue nécessitait qu'un autre argument soit une lvalue | modifiée pour accepter les rvalue |
| LWG 2534 | C++98 | la surcharge pour le flux rvalue n'était pas contrainte | contrainte |
Voir aussi
|
extrait des données formatées
(fonction membre publique) |