#include <iostream>
int main()
{
using namespace std;
cout << cin.rdbuf()->in_avail() << endl;
cin.putback(1);
cin.putback(1);
cout << cin.rdbuf()->in_avail() << endl;
return 0;
} //compile by g++-4.8.1
penso che questa uscita volontà 0 e 2Perché in_avail() produce zero anche se lo stream ha un carattere?
ma quando faccio funzionare il codice, uscita 0 e 0, perché?
o se cambio cin.putback (1); a int a; cin >> a; con input 12 12;
emette ancora 0 e 0
La mia ipotesi è che sia perché non c'era nulla nello stream, quindi non è possibile "riproporre" nulla. Inoltre, potresti voler controllare il valore di ritorno di putback() per vedere se ha avuto successo. – PeterK
@PeterK ma se lo faccio -> int a; cin >> a; con input: 12 1222; Ottengo ancora l'output 0 e 0 – miskcoo
Esempio che mostra che succede anche se 'riposta' è riuscita: http://ideone.com/dUq3RF – interjay