将cin重定向到字符串

Cam*_*Cam 10 c++ iostream

我希望cin从字符串中读取输入.

有没有办法让它这样做?

像这样的东西:

const char * s = "123 ab";
cin.readFrom(s);//<---- I want something like this

int i;
cin>>i;

cout<<i; //123
Run Code Online (Sandbox Code Playgroud)

eq-*_*eq- 6

像这样:

#include <sstream>
#include <iostream>

std::istringstream stream("Some string 123");
streambuf* cin_backup = std::cin.rdbuf(stream.rdbuf());
Run Code Online (Sandbox Code Playgroud)

如果要再次使用它,您可能需要备份std :: cin的原始rdbuf.


pse*_*ble 5

我建议使用字符串流.您可以像使用标准输入/标准输出一样使用重载的I/O运算符.像这样的东西:

string tempString = "123 ab";
int firstArg;
string secondArg;

stringstream stream(tempString);

stream >> firstArg >> secondArg;

cout << firstArg << " " << secondArg;
Run Code Online (Sandbox Code Playgroud)

我个人觉得这比读入标准字符串然后使用标准的I/O运算符要清楚得多,但也许你有理由首先将它读入标准,我没有意识到.

希望这可以帮助!