Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用一系列命令预加载cin_C++_Cin_Streambuf - Fatal编程技术网

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;
}