我希望cin从字符串中读取输入。
有没有办法让它这样做?
这样的事情:
const char * s = "123 ab";
cin.readFrom(s);//<---- I want something like this
int i;
cin>>i;
cout<<i; //123
答案 0 :(得分:5)
像这样:
#include <sstream>
#include <iostream>
std::istringstream stream("Some string 123");
streambuf* cin_backup = std::cin.rdbuf(stream.rdbuf());
如果您想再次使用它,您可能需要备份std :: cin的原始rdbuf。
答案 1 :(得分:5)
我建议使用字符串流。您可以像使用标准输入/标准输出那样使用重载的I / O运算符。像这样:
string tempString = "123 ab";
int firstArg;
string secondArg;
stringstream stream(tempString);
stream >> firstArg >> secondArg;
cout << firstArg << " " << secondArg;
我个人觉得这比阅读标准字符串然后使用标准的I / O运算符要清楚得多一些,但也许有一个原因你想先把它读成标准我不喜欢意识到。
希望这有帮助!
答案 2 :(得分:1)
尝试类似:
stringbuf s = string("123 ab");
cin.rdbuf(&s);
答案 3 :(得分:0)
在C ++ 17中,Ben Voigt的解决方案将无法编译,除非您使用select split_part(type, '_'::text, 1) || '_' || split_part(type, '_'::text, 3) as dtype
。而是使用下面的那个:
basic_stringbuf