2

私は現在、さまざまな職務を実行する小さなアプリケーションを作成しようとしています。現在、コンソール アプリがポップアップ表示され、何をしたいのか尋ねられますが、MyApp.exe -printdocuments などで起動したい場合もあります。

この簡単な例を示すことができるチュートリアルはありますか?

4

5 に答える 5

8

C++ では、main()関数は、コマンド ラインで渡される引数を含むパラメータargcとパラメータを持つことができます。argvargc引数の数 (実行可能ファイル名自体を含む) であり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++ のチュートリアルには、おそらくこれに関する詳細情報があります。

于 2008-12-25T05:49:24.980 に答える
5

これを行うには、boost::program_options を使用できます。boost ライブラリを使用したくない場合は、メイン関数の引数を自分で解析する必要があります。

于 2008-12-25T05:51:51.247 に答える
2

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;
}
于 2008-12-25T07:25:46.533 に答える
1

これにはライブラリを使用することをお勧めします。C++ でコマンド ライン引数を使用するためのいくつかのリンクを次に示します。

  1. gperf
于 2008-12-25T05:51:44.290 に答える
0

エントリ ポイント メソッド、つまり C++ では、メイン メソッドは次のようにする必要があります。

int main ( int argc, char *argv[] );

あなたはこの記事を読んで、あなたがやろうとしていることを達成することができます

于 2008-12-25T05:51:23.540 に答える