std::basic_istream<CharT,Traits>:: ignore
|
basic_istream
&
ignore
(
std::
streamsize
count
=
1
, int_type delim
=
Traits
::
eof
(
)
)
;
|
||
Extrait et ignore les caractères du flux d'entrée jusqu'au delim inclus.
ignore
se comporte comme une
UnformattedInputFunction
. Après avoir construit et vérifié l'objet sentinelle, il extrait les caractères du flux et les ignore jusqu'à ce que l'une des conditions suivantes se produise :
- count caractères ont été extraits. Ce test est désactivé dans le cas particulier où count est égal à std:: numeric_limits < std:: streamsize > :: max ( ) .
- des conditions de fin de fichier se produisent dans la séquence d'entrée, auquel cas la fonction appelle setstate ( eofbit ) .
- le prochain caractère disponible c dans la séquence d'entrée est delim , tel que déterminé par Traits :: eq_int_type ( Traits :: to_int_type ( c ) , delim ) . Le caractère délimiteur est extrait et ignoré. Ce test est désactivé si delim est Traits :: eof ( ) .
Table des matières |
Paramètres
| count | - | nombre de caractères à extraire |
| delim | - | caractère délimiteur pour arrêter l'extraction. Il est également extrait |
Valeur de retour
* this
Exceptions
Si une opération interne lève une exception, elle est capturée et
badbit
est défini. Si
exceptions()
est défini pour
badbit
, l'exception est relancée.
Exemple
L'exemple suivant utilise
ignore
pour ignorer les entrées non numériques :
#include <iostream> #include <limits> #include <sstream> constexpr auto max_size = std::numeric_limits<std::streamsize>::max(); int main() { std::istringstream input("1\n" "some non-numeric input\n" "2\n"); for (;;) { int n; input >> n; if (input.eof() || input.bad()) break; else if (input.fail()) { input.clear(); // unset failbit input.ignore(max_size, '\n'); // skip bad input } else std::cout << n << '\n'; } }
Sortie :
1 2
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 | S'applique à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 172 | C++98 | le type de count était incorrectement spécifié comme int | corrigé en std::streamsize |
Voir aussi
|
extrait des caractères
(fonction membre publique) |
|
|
extrait des caractères jusqu'à trouver le caractère spécifié
(fonction membre publique) |