在MFC程序中,利用boost 正则表达式获取URL参数示例

在MFC程序中,利用BOOST regex正则表达式获取 URL参数的示例


#include 

void CMyClass::GetCmdParams()
{
    map _cmdMap;
	enum{_CMDLINE_UID,_CMDLINE_UNAM,_CMDLINE_UAGE};
	_cmdMap[L"UID"] = _CMDLINE_UID;
	_cmdMap[L"UNAM"] = _CMDLINE_UNAM;
	_cmdMap[L"UAGE"] = _CMDLINE_UAGE;
	if(__argc>1)
	{
		wstring _CmdLine = __targv[1];
	}
	//假设URL为http://www.myurl.com/aspx?UID=1234&UNAME=Alex&UAGE=25&
	boost::wregex rx(L"(?<_key>\\w+)=(?<_val>\\w+)(?=&)");
	boost::wregex_iterator pos(_CmdLine.begin(),_CmdLine.end(),rx);
	boost::wregex_iterator end;
	while(pos!=end)
	{
		wstring fullStr = (*pos)[0];
		wstring _key = (*pos)[1];
		wstring _val = (*pos)[2]
		switch(_cmdMap[_key])
		{
		case _CMDLINE_UID:
			m_nUID =  _wtoi(_val.c_str());
		case _CMDLINE_UNAM:
			m_strUNAM = _val.c_str();
		case _CMDLINE_UAGE:
			m_strUNAM = _wtoi(_val.c_str());
		default:
			//忽略无效参数
			break;
		}
		++pos;
	}

}

注:在MFC程序中,应用宏_T(x)来替代 字符窜的L前缀,若不使用MFC,且使用多字节字符库,则去掉L前缀

你可能感兴趣的:(BOOST,C++)