2009-08-22 21 views
4

pythonでは、私がoptparseインスタンスを構築して、オプションとオプションでない/フラグを自動的に除外するようにすることができます二つの異なるバケットに:ブーストboost :: program_optionsがコマンドライン引数を解析する方法

(options, args) = parser.parse_args() 

:: program_options、どのように私は、残りの非オプションと非フラグトークンでトークンのリストを取得するのですか?

私は「ちょっと」と「あなた」

+0

は、他の追加ライブラリとの一貫性のために再タグ付けされていますが、thatおよびboost-program-optionsは既に存在していました。 – rcollyer

+1

Ewwwww、ブーストライブラリはPythonのものに比べて非常に劣っています: '(私もこれに問題がありました。 –

答えて

2

IIRCのみのトークンで構成されるリストを取得することができますどのように

--foo hey --bar BAR you 

:私のプログラムは、フラグ

--foo 
--bar BAR 

と私は、コマンドラインで渡されている場合 positional_options_descriptionhidden optionsの組み合わせを使用する必要があります。 (1)通常のオプションを追加し、名前には --positional=ARGなどの名前を付ける、(2)ヘルプの説明にそのオプションを含めない、(3) command_line_parserを設定して、すべての位置引数を --positionalのように扱います。 (4) vm["positional"].as< std::vector<std::string> >()を使用して位置引数を取得します。

おそらく、ソースツリーのどこかにある例がありますが、今はこのマシンにはありません。ここで

4

は一例です。

namespace po = boost::program_options;  
po::positional_options_description m_positional; 
po::options_description m_cmdLine; 
po::variables_map m_variables; 

m_cmdLine.add_options() 
    (/*stuff*/) 
    ("input", po::value<vector<string> >()->composing(), "") 
; 
m_positional.add("input", -1); 
po::parsed_options parsed = po::command_line_parser(argc, argv) 
         .options(m_cmdLine) 
         .positional(m_positional) 
         .allow_unregistered() 
         .run(); 
// store, notify, etc 

それからちょうど文字列のベクトルとして「入力」という名前のオプションを取得し、あなたはすべてのセットです。

関連する問題