MFC程序处理命令行参数

时间:2021-01-02 14:29:15

其实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"

这个实现的优点是:可以带引号,因此就可以带空格;可以无视顺序。