I have a function that reads user input from std::cin, and I want to write a unittest that inserts some strings into std::cin, such that later extraction from std::cin will
If you really, really want to use std::cin, try this:
int main() {
using namespace std;
streambuf *backup;
istringstream oss("testdata");
backup = cin.rdbuf();
cin.rdbuf(oss.rdbuf());
string str;
cin >> str;
cout << "read " << str;
}
You can restore std::cin's streambuf when you are done from backup. I don't guarantee the portability of this ;P