2013-05-14 16 views
5
私はブーストを使用しています

:: Program_optionsは私のコマンドラインを解析し、次のようにチュートリアルからいくつかのコードを適応しますBoost.Program_optionsでデフォルトの動作は何も引数はありませんか?

try { 
    po::options_description desc("Allowed options"); 

    desc.add_options() 
     ("help,h", "output help message") 
     ("width,w", po::value<int>()->required(), " width") 
    ; 

    po::positional_options_description p; 
    p.add("width", 1); 

    po::variables_map vm; 
    po::store(po::command_line_parser(argc, argv). 
       options(desc).positional(p).run(), vm); 

    if (vm.count("help")) { 
     std::cout << "USAGE: " << av[0] << &p << std::endl; 
     return 0; 
    } 

    po::notify(vm); 

    if (vm.count("width")) { 
     std::cout << "width: " << vm["width"].as<int>() << "\n"; 
    } 
} catch (std::exception& e) { 
    std::cout << e.what() << std::endl; 
    return 1; 
} catch (...) { 
    std::cout << "Exception of unknown type!" << std::endl; 
} 

私は引数が渡​​されていない場合にヘルプを表示したいのですが、私は見つかりませんでしたargcに頼らずにvariables_mapという引数の総数を取得する方法です。

答えて

4

argcここに行く方法は、program_optionsは設定されたオプションの数を公開しません。大胆ではない。

+0

あなたは正しいです、これは工学上です – kittikun

9

私はargcのは常に、少なくともプログラムの名前が含まれているので、引数なしでそれを実行すると、ヘルプが表示されます

if (vm.count("help") || argc == 1) { 

を使用しました。

doh ... nevermind。あなたが具体的にこの解決策を望んでいないという事実をどのように逃したのか分かりません。

関連する問題