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);