Namespaces
Variants

std::basic_istream<CharT,Traits>:: putback

From cppreference.net
basic_istream & putback ( char_type ch ) ;

Replace le caractère ch dans le flux d'entrée de sorte que le prochain caractère extrait sera ch .

Efface d'abord eofbit , puis se comporte comme une UnformattedInputFunction . Après avoir construit et vérifié l'objet sentinelle, si rdbuf() n'est pas nul, appelle rdbuf ( ) - > sputbackc ( ch ) , qui appelle rdbuf ( ) - > pbackfail ( ch ) si ch n'est pas égal au caractère précédemment extrait.

Si rdbuf() est nul ou si rdbuf - > sputbackc ( ch ) retourne Traits :: eof ( ) , appelle setstate ( badbit ) .

Dans tous les cas, initialise le compteur gcount() à zéro.

Table des matières

Paramètres

ch - caractère à placer dans le flux d'entrée

Valeur de retour

* this

Exceptions

failure if an error occurred (the error state flag is not goodbit ) and exceptions() is set to throw for that state.

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

Montre la différence entre les versions modifiante et non-modifiante de putback() .

#include <iostream>
#include <sstream>
int main()
{
    std::stringstream s1("Hello, world"); // flux d'E/S
    s1.get();
    if (s1.putback('Y')) // modifie le tampon
        std::cout << s1.rdbuf() << '\n';
    else
        std::cout << "putback failed\n";
    std::cout << "--\n";
    std::istringstream s2("Hello, world"); // flux en entrée uniquement
    s2.get();
    if (s2.putback('Y')) // ne peut pas modifier un tampon en entrée seule
        std::cout << s2.rdbuf() << '\n';
    else
        std::cout << "putback failed\n"; 
    s2.clear();
    std::cout << "--\n";
    if (s2.putback('H')) // putback non modifiant
        std::cout << s2.rdbuf() << '\n';
    else
        std::cout << "putback failed\n";
}

Sortie :

Yello, world
--
putback failed
--
Hello, world

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 2243 C++98 sputbackc() était appelé sans argument appelé avec ch

Voir aussi

replace un caractère dans la séquence d'entrée
(fonction membre publique de std::basic_streambuf<CharT,Traits> )
annule l'extraction d'un caractère
(fonction membre publique)
lit le caractère suivant sans l'extraire
(fonction membre publique)