我开始安全地实现了一些读取字符串并解析它的代码:
#include <iostream>
#include <sstream>
int main() {
string work;
int var1, var2;
cin >> work; // Fill working string from stdin
stringstream(work) >> var1 >> var2; // Parses as expected.
cout << var1 << ' ' << var2 << endl;
return 0;
}
我以为我会删除一些无关的代码,它似乎工作正常,但我可以理解这可能是坏。
...
stringstream work;
...
cin >> work.rdbuf(); // Fill working string from stdin
work >> var1 >> var2; // Parses as expected.
...
为什么从istream读取不会以错误的方式覆盖工作缓冲区?用这种技术我应该注意什么?