Warum gibt in_avail () Null aus, obwohl der Stream Zeichen enthält?

#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

Ich denke, dies wird 0 und 2 ausgeben

aber wenn ich den Code ausführe, gibt er 0 und 0 aus, warum?

oder wenn ich cin.putback (1) ändere; zu int a; cin >> a; mit Eingang 12 12;

es gibt immer noch 0 und 0 aus

Antworten auf die Frage(2)

Ihre Antwort auf die Frage