0

私はexceptions()を使ってプログラムの入力をテストすることになっています。次のコードを作成しましたが、エラーなしでコンパイルできます。

cin.exceptions(istream::failbit |istream::badbit);
    do
    {
        try
        {
            getline(cin,uppg);
        }
        catch(istream::failure e)
        {
            cerr << "Exception i inläsning";

        }
        ...
     }while(...)

問題は....このコードをテストする方法がわかりません。フェイルビットまたはバッドビットを取得するために、どのタイプの入力を書き込むことができますか?

4

1 に答える 1

0

これ(ストリームのエラー状態)によると、間違った入力シーケンスでフェイルビットが生成されます。たとえば、次のように記述します。int n = 0; cin >> n; 数値の代わりに文字列を入力します。


    int main(void)
    {
        int n = 0;
        cin.exceptions(istream::failbit | istream::badbit);

        try
        {
            cin >> n;
        }
        catch(istream::failure e)
        {
            cerr << "Exception" << endl;

        }
        return 0;
    }

于 2012-10-05T22:54:19.870 に答える