在他的回答中,特别是在链接的 Ideone 示例中,@Nawaz 展示了如何更改缓冲区对象cout
以写入其他内容。这让我想到利用它来准备输入cin
,通过填充它streambuf
:
#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;
}
但这并不像预期的那样工作,或者换句话说,它失败了。:| cin
仍然需要用户输入,而不是从提供的streambuf
. 有没有办法使这项工作?