2

3 つの異なるコマンド ライン コマンドの文字列配列があります。3 つのシステム関数を書き出す代わりに、これらのコマンドを保持する文字列配列をシステム関数 (または同様の関数、つまり exec()) に for ループで渡す方法を学ぼうとしています。この文字列配列を一度に 1 つずつシステム関数に渡す方法がわかりません。目標は、それぞれの終了ステータスを取得し、エラーが返された場合に for ループを中断することです。

            std::string arrString[3] = {"something","another thing","a final thing"}
            int i;
            for(i=0; i<3; i++)
            {
                if (system(/*Something*/))
                ;//Do something...
            }     

編集:これは、エラーが発生したことを出力しますが、そうすべきではありません。

                std::string arrString[4] = {"cmd","cmd","cmd"};
            int i;
            for(i=0; i<3; i++)
            {
                if (system(arrString[i].c_str())==0) {
                    OutputDebugStringW(L"It works!");
                }
                else
                {
                    OutputDebugStringW(L"It doesnt work :(");
                }
            }   
4

3 に答える 3

3

systemを取るので、配列の各要素char*を呼び出す必要があります。c_str

std::string arrString[3] = {"something","another thing","a final thing"}
int i;
for(i=0; i<3; i++) {
    if (system(arrString[i].c_str())) {
        //Do something...
    }
}
于 2012-06-08T16:00:58.513 に答える
0
system(arrString[i])

次に、終了コードを確認し、必要に応じてループを中断します。

于 2012-06-08T16:00:50.803 に答える
0

関数を使用std:stringしてchar*最初に変換する必要があります。c_str()

system(arrString[i].c_str())

于 2012-06-08T16:01:26.000 に答える