1

コマンド ラインと構成ファイルのデータを処理するために boost program_options ライブラリを使用していますが、処理されたデータから必要な文字列を取得する方法が明確ではありません。

program_options コマンド ライン パラメータを取得して、getaddrinfo 関数の正しい形式にする方法を教えてください。

//First, the options are declared

po::options_description config("Configuration");
    config.add_options()
        ("IPAddress", po::value< vector<string> >(),"127.0.0.1")
        ("Port", po::value< vector<string> >(),"5000")
         ;
//...

// Attach the config descriptions to the command line and/or config file

    po::options_description cmdline_options;
    cmdline_options.add(config).add(hidden);

    po::options_description config_file_options;
            config_file_options.add(hidden);

    po::options_description visible("Allowed options");
            visible.add(config);

    po::positional_options_description p;
            p.add("input-file", -1);

    po::variables_map vm;
    store(po::command_line_parser(ac, av).
          options(cmdline_options).positional(p).run(), vm);
    notify(vm);

// Use the command line options for IPAddress and Port
// TODO: Load the config file's address and port information
int retval = getaddrinfo(vm["IPAdress"].as< string >(),vm["Port"].as<string>(),    &hint, &list);
// This doesn't work and neither does this
//  int retval = getaddrinfo(vm["IPAdress"].as< vector<string> >(),vm["Port"].as<vector <string> >(),    &hint, &list);

// getaddressinfo

getaddrinfo の netdb のプロトタイプは次のとおりです。

extern int getaddrinfo (__const char *__restrict __name,
        __const char *__restrict __service,
        __const struct addrinfo *__restrict __req,
        struct addrinfo **__restrict __pai);

ここに、program_options API をブーストするためのリンクがあります。

http://www.boost.org/doc/libs/1_37_0/doc/html/program_options.html

4

1 に答える 1

3

必要な引数に型が必要な場合に を指定char *しようとするとstring、コンパイラは何が問題なのかを教えてくれます。そのエラー メッセージを読んで、それを理解しようとします。

char *からを取得するにstringは、 メソッドを使用しますc_str()

于 2012-10-31T12:24:04.477 に答える