用C++写的一个urlcode的例子

urlencode的规则其实很简单,搜索了半天,才找到原理,看了看其他人写的例子,csdn上有一个哥们用vc写了一个例子,感觉不过瘾,用c++重写了一个,个人感觉已经足够简单了,希望对初学者有用。

URLEncode是这样编码的 
1。数字和字母不变。
2。空格变为"+"号。
3。其他被编码成"%"加上他们的ascii的十六进制,规律是这样的 
比如“啊”字 Ascii的十六进制是B0A1——>%B0%A1(Note:它是每个字节前加个%)。

 

/*
URLEncode是这样编码的 
1。数字和字母不变。
2。空格变为"+"号。
3。其他被编码成"%"加上他们的ascii的十六进制,规律是这样的 
比如“啊”字 Ascii的十六进制是B0A1——>%B0%A1(Note:它是每个字节前加个%)。
*/


#include 
< iostream >
#include 
< string >
#include 
< fstream >
#include 
< ctype.h >
#include 
< stdlib.h >

using   namespace  std;

typedef unsigned 
char  BYTE;

inline BYTE toHex(
const  BYTE  & x)
{
    
return x > 9 ? x + 55: x + 48;
}


string  urlEncoding(  string   & sIn )
{
    cout 
<< "size: " << sIn.size() << endl;
    
string sOut;
    
forint ix = 0; ix < sIn.size(); ix++ )
    
{
        BYTE buf[
4];
        memset( buf, 
04 );
        
if( isalnum( (BYTE)sIn[ix] ) )
        
{
            buf[
0= sIn[ix];
        }

        
else if ( isspace( (BYTE)sIn[ix] ) )
        
{
            buf[
0= '+';
        }

        
else
        
{
            buf[
0= '%';
            buf[
1= toHex( (BYTE)sIn[ix] >> 4 );
            buf[
2= toHex( (BYTE)sIn[ix] % 16);
        }

        sOut 
+= (char *)buf;
    }

    
return sOut;
}


int  main( int  argc,  char   * argv[])
{
    
string src;
    
    ifstream inFile( 
"in.txt" );
    
if!inFile )
    
{
        cout 
<< "not in.txt to read" << endl;
        system(
"PAUSE");
        
return -1;
    }

    inFile 
>> src;
    
    
string sOut = urlEncoding( src );
    cout 
<< sOut << endl;
  
  system(
"PAUSE");    
  
return 0;
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值