C++Builderでコマンドライン引数を解析する

C++ Builderでコマンドライン引数を解析する方法。

CommandLineToArgvW APIを使うと、コマンドラインを解析することができます。

たとえば、

foo.exe parameter1 parameter2 parameter3 parameter4

というコマンドラインを解析して、

foo.exe
parameter1
parameter2
parameter3
parameter4

に分解できます。

コマンドライン文字列は、ダブルクォーテーションで括れば、空白文字も使用できます。

foo.exe "C:\Documents and Settings\yamamoto\デスクトップ\新規テキスト ドキュメント.txt"

CommandLineToArgvW APIの使い方は次のようになります。

LPWSTR CommandLineToArgvW(
  LPCWSTR lpCmdLine, // コマンドライン文字列へのポインタ
  int *pNumArgs // 引数の数を受け取る変数へのポインタ
);

戻り値は引数リストのポインタです。

実際の使用例は、次のようになります。

//コマンドライン文字列
UnicodeString CmdLine = L"foo.exe parameter1 parameter2 parameter3 parameter4";

// 引数の数
int args;

//引数リストを格納する
vector<UnicodeString> result;

LPTSTR *lplpszArgs = CommandLineToArgvW(CmdLine.c_str(), &args);
for (int i = 0; i < args; ++i) {
  const UnicodeString s = lplpszArgs[i];
  result.push_back(s);
}
LocalFree(lplpszArgs);

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です