百度首页 | 百度空间
 
查看文章
 
C++写的一个urlencode的例子
2007-05-08 20:39

urlencode其实是一个很简单的小玩意,在网上搜索了半天,讲如何使用的很多,讲如何实现的却很少,没办法,就自己写了一个c++的实现。希望对以后的初学者会有所帮助。

main.cpp:

----------------------------------------------------------------------------------------------------------------

/*
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;
     for( int ix = 0; ix < sIn.size(); ix++ )
     {
         BYTE buf[4];
         memset( buf, 0, 4 );
         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;
}


类别:Code | 添加到搜藏 | 浏览() | 评论 (1)
 
最近读者:
 
网友评论:
1
2008-07-30 21:57
您好,感謝您提供那麼好用的例子,
但如果要解碼回去的話能不能再提供例子呢?
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码:
 

     

©2008 Baidu