Не обращая внимания на этот вопрос, продолжая его исследовать, я заставил его работать.То, что я сделал, было на самом деле наоборот, чем планировалось;Я предоставил cin
a streambuf
для чтения, вместо того, чтобы заполнять его.
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main(){
stringstream ss;
ss << "Here be prepared input for cin";
streambuf* cin_buf = cin.rdbuf(ss.rdbuf());
string s;
while(cin >> s){
cout << s << " ";
}
cin.rdbuf(cin_buf);
}
Хотя было бы неплохо увидеть, можно ли предоставить подготовленный ввод без необходимости изменять cin
streambuf
напрямую, то есть запись в свой буфер напрямую вместо чтения из другого.