其实MFC程序中argc、argv依然可以用,如果是unicode则argv变成了wargv。于是,我用了以下几行代码搞定:
CString GetValueFromCmdLine(CString key)
{
wchar_t value[64];
CString fmt;
fmt.Format(L"/%s:%%s", key);
for (int i=1; i<__argc; i++)
{
if (_wcsnicmp(left, __wargv[i], left.GetLength()) == 0)
return __wargv[i] + left.GetLength();
} return L"";}
用法:假如命令行参数为
abc.exe /para1:xy /para2:"has space"
CString para1 = GetValueFromCmdLine(L"para1");
CString para2 = GetValueFromCmdLine(L"para2");
结果为:
para1="xy" para2="has space"
这个实现的优点是:可以带引号,因此就可以带空格;可以无视顺序。