C++ 使用一系列命令预加载cin
我正在测试需要几个控制台命令才能执行的函数。我希望能够在源代码中粘贴一两行代码,有效地执行与键入命令相同的操作,而不是每次我想要测试特定方法的功能时都必须键入这些命令。我尝试了以下代码,但它似乎只是无限循环C++ 使用一系列命令预加载cin,c++,cin,streambuf,C++,Cin,Streambuf,我正在测试需要几个控制台命令才能执行的函数。我希望能够在源代码中粘贴一两行代码,有效地执行与键入命令相同的操作,而不是每次我想要测试特定方法的功能时都必须键入这些命令。我尝试了以下代码,但它似乎只是无限循环 streambuf *backup; backup = cin.rdbuf(); stringbuf s = stringbuf("1 a 1 b 4 a 4 b 9"); cin.rdbuf(&s); cin.rdbuf(backup); 下面的代码 #包括 #包括 #包括 使
streambuf *backup;
backup = cin.rdbuf();
stringbuf s = stringbuf("1 a 1 b 4 a 4 b 9");
cin.rdbuf(&s);
cin.rdbuf(backup);
下面的代码
#包括
#包括
#包括
使用名称空间std;
int main(){
istringstream iss(“1A1B4A4 B9”);
cin.rdbuf(iss.rdbuf());
int num=0;
字符c;
while(cin>>num>>c | | |!cin.eof()){
if(cin.fail()){
cin.clear();
虚拟字符串;
cin>>假人;
继续;
}
你是否希望/需要cin
在预定义字符串完成后继续从stdin读取,或者它应该将该字符串视为它将获得的所有输入?为什么不使用shell的输入重定向功能从文件中馈送cin
?@jwodder我希望以后仍然能够正常使用cin@πάνταῥεῖ 因为这比使用几行代码要复杂得多。(我会打开、编辑和保存文件,而不是编辑字符串)。考虑让函数接受任意流作为参数(std::istream&
),而不是强制执行cin。
#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());
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;
}