在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前綴