É possível “preparar” a entrada de cin?
Emua resposta, especificamente noxemplo de Ideone vinculado, @Nawaz mostra como você pode alterar o objeto de buffer decout
para escrever para outra coisa. Isso me fez pensar em utilizar isso para preparar informações decin
, preenchendo seustreambuf
:
#include <iostream>
#include <sstream>
using namespace std;
int main(){
streambuf *coutbuf = cout.rdbuf(cin.rdbuf());
cout << "this goes to the input stream" << endl;
string s;
cin >> s;
cout.rdbuf(coutbuf);
cout << "after cour.rdbuf : " << s;
return 0;
}
Mas isso não funciona como o esperado ou, em outras palavras, falha. : |cin
ainda espera a entrada do usuário, em vez de ler a partir dostreambuf
. Existe uma maneira de fazer isso funcionar?