私はWin32コンソールアプリケーションを書いています。これは次のようなオプションの引数で開始できます。
app.exe /argName1:"argValue" /argName2:"argValue"
argc / argv変数から手動で解析する必要がありますか(どの引数が存在するかを判別できるようにするため)、またはWin32 APIにはいくつかの引数パーサーが含まれていますか?
私はWin32コンソールアプリケーションを書いています。これは次のようなオプションの引数で開始できます。
app.exe /argName1:"argValue" /argName2:"argValue"
argc / argv変数から手動で解析する必要がありますか(どの引数が存在するかを判別できるようにするため)、またはWin32 APIにはいくつかの引数パーサーが含まれていますか?
コマンドライン引数を解析するための Win32 サポートはありません。
MSDN の関連記事を参照してください。
C++ コマンド ライン引数の解析
引数の定義
C++ コマンド ライン処理のカスタマイズ
同様の質問も参照してください:
C++ にはどのようなパラメーター パーサー ライブラリがありますか? C/C++ の
main() オプション パーサーへのパラメーターの解析? C++ でコマンド ライン パラメータを解析する効果的な方法は何ですか?
...
Win32がコマンドライン引数に対して提供する唯一のサポートは、関数GetCommandLine
とCommandLineToArgvW
です。argv
これは、コンソールアプリケーション用のパラメータとまったく同じです。
自分で解析を行う必要があります。正規表現はこれに適したオプションです。
さまざまなライブラリやものをいじることができます...しかし、必要なのは単純で実用的で迅速なものだけである場合があります。
int i;
char *key, *value;
for( i = 1; i <= argc; i++ ) {
if( *argv[i] == '/' ) {
key = argv[i] + 1;
value = strchr(key, ':');
if( value != NULL ) *value++ = 0;
process_option( key, value );
} else {
process_value( argv[i] );
}
}
あなたはアイデアを得る...
これは、暗示されているように(従来のmain
機能を備えた)通常のWin32コンソールアプリを想定しています。Win32 アプリの場合はWinMain
、別の人が既にコメントしているように、代わりに参加します。
記録として、Microsoft の MSVC ではなくMinGW の GCCを使用すると、GNU getopt (これには getopt_long および getopt_long_only バリアントも含まれます) が標準のランタイム ライブラリに含まれます。
GetCommandLine, PathRemoveArgs, PathGetArgs
ループで使用して引数を解析できます
https://msdn.microsoft.com/en-us/library/windows/desktop/bb773742(v=vs.85).aspx
私はプレーン C で書かれたlibparamsetを開発して使用しています。これは非常に強力で、Windows でうまく動作します。以下を提供します。
利用可能な Win32 API があるとは思えません。getoptまたは別のライブラリの Windows 実装を探すことができます。
そのような win32 api 関数の存在についてはわかりませんが、Boost.Program_Optionsライブラリが役に立ちます。