Injecting string to 'cin'

前端 未结 3 1955
长发绾君心
长发绾君心 2020-12-09 17:36

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

3条回答
  •  生来不讨喜
    2020-12-09 17:57

    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

提交回复
热议问题