C++ 是否可以使用cin设置快捷方式>&燃气轮机;stringstream::rdbuf()?
我从读取字符串并解析它的一些代码的安全实现开始:C++ 是否可以使用cin设置快捷方式>&燃气轮机;stringstream::rdbuf()?,c++,cin,stringstream,C++,Cin,Stringstream,我从读取字符串并解析它的一些代码的安全实现开始: #include <iostream> #include <sstream> int main() { string work; int var1, var2; cin >> work; // Fill working string from stdin stringstream(work) >> var1 >> var2
#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;
}
为什么从istream读取不会以不好的方式覆盖工作的缓冲区?使用这种技术,我应该注意什么?在这两种情况下,如果引发异常,可以保证流处于有效状态。某些流,如
fstream
维护一个独立的内部缓冲区,与rdbuf
操作的缓冲区不同。std::cin>>var1>>var2代码>读取两个int变量,而不让所有的轮子旋转。那些额外的东西能解决什么问题?嘿。。。我不再记得完整的上下文,但这是一个非常简单的摘录;我很好奇为什么缓冲区不会被覆盖。
...
stringstream work;
...
cin >> work.rdbuf(); // Fill working string from stdin
work >> var1 >> var2; // Parses as expected.
...