皓月云天

紧张中保持一份松弛

松弛中保持一份紧张

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

【原创】史上最短小精悍C++ UrlDecode

Posted on 2011-08-01 01:44  皓月云天  阅读(2746)  评论(0编辑  收藏  举报

看了很多资料,折腾了时间,我这个菜鸟写出这么个函数,感谢言兌,大部分代码用了他的代码:

void Decode(char *p)
{
int i=0;
while(*(p+i))
{
if ((*p=*(p+i)) == '%')
{
*p=*(p+i+1) >= 'A' ? ((*(p+i+1) & 0XDF) - 'A') + 10 : (*(p+i+1) - '0');
*p=(*p) * 16;
*p+=*(p+i+2) >= 'A' ? ((*(p+i+2) & 0XDF) - 'A') + 10 : (*(p+i+2) - '0');
i
+=2;
}
else if (*(p+i)=='+')
{
*p=' ';
}
p
++;
}
*p='\0';
}

CString UrlDecode(CString url)
{
LPSTR _url
= CW2A(url);
Decode(_url);
return CString(CA2W(_url,CP_UTF8));
}