0

実行する前にいくつかのコンソール コマンドを必要とする関数をテストしています。特定のメソッドの機能をテストするたびにこれらのコマンドを入力する代わりに、ソースに 1 ~ 2 行のコードを貼り付けるだけで、コマンドを入力するのと同じことを効果的に実行できるようにしたいと考えています。 . 次のコードを試しましたが、無限にループしているようです。

streambuf *backup;
backup = cin.rdbuf();
stringbuf s = stringbuf("1 a 1 b 4 a 4 b 9");
cin.rdbuf(&s);
cin.rdbuf(backup); 
4

1 に答える 1

2

次のコードは私にとってはうまくいきます

#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;
}
于 2014-07-17T19:04:54.467 に答える