私は現在、さまざまな職務を実行する小さなアプリケーションを作成しようとしています。現在、コンソール アプリがポップアップ表示され、何をしたいのか尋ねられますが、MyApp.exe -printdocuments などで起動したい場合もあります。
この簡単な例を示すことができるチュートリアルはありますか?
私は現在、さまざまな職務を実行する小さなアプリケーションを作成しようとしています。現在、コンソール アプリがポップアップ表示され、何をしたいのか尋ねられますが、MyApp.exe -printdocuments などで起動したい場合もあります。
この簡単な例を示すことができるチュートリアルはありますか?
C++ では、main()
関数は、コマンド ラインで渡される引数を含むパラメータargc
とパラメータを持つことができます。argv
はargc
引数の数 (実行可能ファイル名自体を含む) でありargv
、長さ の null で終わる文字列へのポインターの配列ですargc
。
たとえば、次のプログラムはその引数を出力します。
#include <stdio.h>
int main(int argc, char *argv[])
{
for (int i = 0; i < argc; i++) {
printf("argv[%d]: %s\n", i, argv[i]);
}
return 0;
}
C または C++ のチュートリアルには、おそらくこれに関する詳細情報があります。
これを行うには、boost::program_options を使用できます。boost ライブラリを使用したくない場合は、メイン関数の引数を自分で解析する必要があります。
getopt
は、引数の解析に役立つ posix 関数 (Windows 用の実装が存在します) です。
#include <unistd.h> // getopt
// call with my_tool [-n] [-t <value>]
int main(int argc, char *argv[])
{
int opt;
int nsecs;
bool n_given = false, t_given = false;
// a colon says the preceding option takes an argument
while ((opt = ::getopt(argc, argv, "nt:")) != -1) {
switch (opt) {
case 'n':
n_given = true;
break;
case 't':
nsecs = boost::lexical_cast<int>(optarg);
t_given = true;
break;
default: /* '?' */
std::cerr << "Usage: "
<< argv[0] << " [-t <value>] [-n]\n";
return 1;
}
}
return 0;
}
これにはライブラリを使用することをお勧めします。C++ でコマンド ライン引数を使用するためのいくつかのリンクを次に示します。
エントリ ポイント メソッド、つまり C++ では、メイン メソッドは次のようにする必要があります。
int main ( int argc, char *argv[] );
あなたはこの記事を読んで、あなたがやろうとしていることを達成することができます