1

幅の整数、高さの整数、ファイル名の 3 つの入力を受け入れる C++ プログラムがあります。今、私は次のようにプログラムをコンパイルして実行します (prog という名前を付けたとします):

>prog
// hit enter
>128 128 output.ppm

これにより、正常な出力が得られますが、プログラムの説明によると、適切なコマンドライン構文は次のとおりです。

>prog w h filename

それだけです。これは、私のプログラムが同じ行で開始できることを意味しますか? おそらく、暗黙のうちにプログラム名を入力した後に Enter キーを押すことを意味しますが、そうでない場合、実際にこれを行う方法はありますか?

4

3 に答える 3

4

プログラムは、コマンド ライン パラメーターを解析する必要があります。仕様を見ると、想定されるワークフローは

>prog 128 128 output.ppm
//hit enter after the parameters

詳細については、こちらをご覧ください。

于 2013-01-16T17:31:44.227 に答える
3

あなたは問題に間違ってアプローチしています。std::cinプログラムが開始された後、入力を取得しています。プログラムの仕様では、入力はcommand の一部として指定する必要があると規定されています。次のようなコマンドを考えてみましょう。これはコマンドls -l-l一部であり、プログラムに渡されて解析および処理されます。

コマンドのような実行を許可する必要があるprog 128 128 output.ppmため、ユーザーはそれを入力してからEnterキーを押してプログラムを実行します。C++ プログラム内でコマンド ライン引数にアクセスするにはどうすればよいですか? それが、関数のargcおよびargvパラメータの目的です。mainメイン関数は次のようになります。

int main(int argc, char* argv[]) { ... }

argc引数は、コマンド ラインで渡される引数の数を示します (この例では 4 になります)。これは、配列のサイズでもありますargv。各要素は、コマンドからの引数です。たとえば、argv[0]will be "prog"argv[1]will be"128"などです。これらの値を解析し、その値に応じてプログラムの機能を変更する必要があります。

于 2013-01-16T17:38:31.860 に答える
2

You can pass command via the argument in the main function:

int main(int argc, char *argv[]) {
}

argc is the number of arguments and argv is an array of arguments.

于 2013-01-16T17:37:17.500 に答える