13

コマンド ライン オプションを解析するためのライブラリはたくさんありますが、それらを区別するのは困難です。誰かがそれらのいずれかを経験したことがありますか? 他のものより難しい/優れている/速い/簡単/何でもありますか? それとも自分で育てるべきですか?

4

6 に答える 6

18

完全にクロスプラットフォームなものが必要な場合は、Boost::Program_Optionsライブラリが非常に優れていることがわかりました。セットアップには学習曲線がありますが、それをマスターすると、物事が大幅に簡素化されます.

于 2009-03-12T05:06:08.000 に答える
13

多くの目的で、GNUgetopt()getopt_long()関数は適切な選択です。

GNUgetopt()は 1 文字のオプション引数用であり、POSIX 標準の動作にかなり近く、環境変数 POSIXLY_CORRECT を設定することでより正統に動作するよう説得できます。違いは、GNUgetopt()が最初の非オプション引数の後にオプション引数を認識し、すべてのオプション引数が非オプション引数の前に処理されるように引数を並べ替えることです。これは時々重要になりますが、コンテキストは少し難解になる傾向があります。他にもいくつかの追加のトリックがあります。

GNUgetopt_long()は、 などの長いオプションを処理するための最良のメカニズムです--help。オプションの引数を処理し、単一文字のオプションとあらゆる種類のものを一致させることができます。

さまざまな方法でオプションを処理する、他にも多数のパッケージが利用可能です。

(Perl には、何年にもわたってどれだけの労力が費やされたかを反映して、多数の Getopt モジュールがあります。)

「 Unix シェル コマンドの一般的な構文とは」で、役立つ追加情報を見つけることができます。また、ユーティリティの規則の章で、コマンド ライン規則の POSIX 仕様を読むこともできます。

于 2009-03-12T04:49:16.217 に答える
6

boost::program_optionsは非常に優れており、オプション パラメータが特定の型 (「int」など) であることを確認し、変数に直接格納できる優れた C++ インターフェイスを備えています。

また、構成ファイルから「オプション」をロードすることもサポートしているため、構成ファイルのパーサーを無料で入手できます。このようにして、コマンド ラインからすべての構成設定をオーバーライドしたり、すべてのコマンド ライン オプションを構成ファイルに追加したりすることを非常に簡単に許可できるため、非常に柔軟になります。

于 2009-03-12T05:10:05.103 に答える
1

Linux/Unix を使用している場合は、 getoptがオプション パーサーです。UNIX のほぼすべてのフレーバーで動作し、使いやすい

于 2009-03-12T04:36:43.033 に答える
1

ポップもあります。

于 2009-03-12T09:58:20.060 に答える
1

私はほとんどの場合に getopt_long() のシステム実装を使用しますが、移植性を高める必要があるため、そのような POSIX クリーチャーの快適さの使用が禁止される場合があります。

getopt() / getopt_long() が利用できず、独自のものを作成する必要がある場合の、コマンド ライン オプションの POSIX ビューに関する標準は次のとおりです。また、ヘルプ/オプションの概要表示についてPOSIXが何を言っているかを見たいと思うかもしれません(標準のオフハンドのその部分へのリンクが見つかりません)。

個人的には、--long-options を取らないプログラムを使用するのは好きではありません。短いオプションを覚えておくのが面倒で、2 つのプログラムが同じものを使用することはないからです。

于 2009-03-12T05:07:35.017 に答える