在MFC程序中,利用boost 正則表達式獲取URL參數示例

在MFC程序中,利用BOOST regex正則表達式獲取 URL參數的示例


#include <boost/regex.hpp>

void CMyClass::GetCmdParams()
{
    map<wstring, int> _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前綴

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章