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

本文介绍了一种简单的URL编码实现方法,通过C++代码详细解释了如何将特定字符转换为适用于URL的标准格式。主要包括:保留字母和数字不变,将空格替换为'+'符号,以及其他字符转为其ASCII码对应的十六进制形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值