这是一个示例,该示例如何
cin使用
rdbuf()函数来操纵的输入缓冲区,以从检索假输入
std::istringstream
#include <iostream>#include <sstream>#include <string>using namespace std;int main() { istringstream iss("1 a 1 b 4 a 4 b 9"); cin.rdbuf(iss.rdbuf()); // This line actually sets cin's input buffer // to the same one as used in iss (namely the // string data that was used to initialize it) int num = 0; char c; while(cin >> num >> c || !cin.eof()) { if(cin.fail()) { cin.clear(); string dummy; cin >> dummy; continue; } cout << num << ", " << c << endl; } return 0;}看到它正常工作
另一个选择(与JoachimPileborg在其评论恕我直言中所说的更接近)是将阅读代码放入单独的函数中,例如
int readIntFromStream(std::istream& input) { int result = 0; input >> result; return result;}这使您可以进行不同的测试和生产要求,例如
// Testing prestd::istringstream iss("42");int value = readIntFromStream(iss);// Production preint value = readIntFromStream(std::cin);


