国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - C/C++ - C++ 寫的UrlEncode和UrlDecode實(shí)例

C++ 寫的UrlEncode和UrlDecode實(shí)例

2021-10-11 11:42claireyuancy C/C++

這篇文章主要介紹了C++ 寫的UrlEncode和UrlDecode實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

關(guān)于UrlEncode的實(shí)現(xiàn)(C++)。網(wǎng)上有非常多不同的版本號(hào)。對(duì)須要編碼的字符集的選取并不統(tǒng)一。那么究竟有沒(méi)有標(biāo)準(zhǔn)呢?答案是有的。

絕對(duì)不編碼的,僅僅有字母、數(shù)字、短橫線(-)、下劃線(_)、點(diǎn)(.)和波浪號(hào)(~),其它字符要視情況而定。所以一般性的urlencode僅僅需保留上述字符不進(jìn)行編碼。

以下給出實(shí)現(xiàn):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
unsigned char ToHex(unsigned char x)
{
 return x > 9 ? x + 55 : x + 48;
}
 
unsigned char FromHex(unsigned char x)
{
 unsigned char y;
 if (x >= 'A' && x <= 'Z') y = x - 'A' + 10;
 else if (x >= 'a' && x <= 'z') y = x - 'a' + 10;
 else if (x >= '0' && x <= '9') y = x - '0';
 else assert(0);
 return y;
}
 
std::string UrlEncode(const std::string& str)
{
 std::string strTemp = "";
 size_t length = str.length();
 for (size_t i = 0; i < length; i++)
 {
  if (isalnum((unsigned char)str[i]) ||
   (str[i] == '-') ||
   (str[i] == '_') ||
   (str[i] == '.') ||
   (str[i] == '~'))
   strTemp += str[i];
  else if (str[i] == ' ')
   strTemp += "+";
  else
  {
   strTemp += '%';
   strTemp += ToHex((unsigned char)str[i] >> 4);
   strTemp += ToHex((unsigned char)str[i] % 16);
  }
 }
 return strTemp;
}
 
std::string UrlDecode(const std::string& str)
{
 std::string strTemp = "";
 size_t length = str.length();
 for (size_t i = 0; i < length; i++)
 {
  if (str[i] == '+') strTemp += ' ';
  else if (str[i] == '%')
  {
   assert(i + 2 < length);
   unsigned char high = FromHex((unsigned char)str[++i]);
   unsigned char low = FromHex((unsigned char)str[++i]);
   strTemp += high*16 + low;
  }
  else strTemp += str[i];
 }
 return strTemp;
}

補(bǔ)充知識(shí):C++中URL解碼/編碼

我就廢話不多說(shuō)了,大家還是直接看代碼吧~

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <iostream>
#include <string>
using namespace std;
 
char dec2hexChar(short int n) {
    if (0 <= n && n <= 9) {
        return char(short('0') + n);
    }
    else if (10 <= n && n <= 15) {
        return char(short('A') + n - 10);
    }
    else {
        return char(0);
    }
}
 
short int hexChar2dec(char c) {
    if ('0' <= c && c <= '9') {
        return short(c - '0');
    }
    else if ('a' <= c && c <= 'f') {
        return (short(c - 'a') + 10);
    }
    else if ('A' <= c && c <= 'F') {
        return (short(c - 'A') + 10);
    }
    else {
        return -1;
    }
}
 
string escapeURL(const string& URL)
{
    string result = "";
    for (unsigned int i = 0; i < URL.length(); i++) {
        char c = URL[i];
        if (
            ('0' <= c && c <= '9') ||
            ('a' <= c && c <= 'z') ||
            ('A' <= c && c <= 'Z') ||
            c == '/' || c == '.'
            ) {
            result += c;
        }
        else {
            int j = (short int)c;
            if (j < 0) {
                j += 256;
            }
            int i1, i0;
            i1 = j / 16;
            i0 = j - i1 * 16;
            result += '%';
            result += dec2hexChar(i1);
            result += dec2hexChar(i0);
        }
    }
    return result;
}
 
string deescapeURL(const string& URL) {
    string result = "";
    for (unsigned int i = 0; i < URL.length(); i++) {
        char c = URL[i];
        if (c != '%') {
            result += c;
        }
        else {
            char c1 = URL[++i];
            char c0 = URL[++i];
            int num = 0;
            num += hexChar2dec(c1) * 16 + hexChar2dec(c0);
            result += char(num);
        }
    }
    return result;
}

以上這篇C++ 寫的UrlEncode和UrlDecode實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://www.cnblogs.com/claireyuancy/p/6915447.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久国产精品一区二区三区 | av黄网| 久草视频网 | h视频免费观看 | 国产精品福利91 | 亚洲免费成人av | 亚洲精品成人免费 | 最新中文字幕在线 | 午夜激情在线 | 一本一道久久a久久精品逆3p | 伊人精品视频 | 成人免费毛片aaaaaa片 | 国产精品欧美一区二区三区不卡 | 国产精品视频免费观看 | www.色94色.com| 伊人无码高清 | 亚洲欧美日韩国产综合 | 亚洲男人的天堂网站 | 午夜小视频在线观看 | 91精品国产91久久久久久黑人 | 春色导航 | 天堂中文av | 国产精品久久久久久久久久久久久 | 中文字幕亚洲欧美日韩在线不卡 | 日韩精品中文字幕在线观看 | 国产麻豆精品 | 日本一本视频 | 久久亚洲国产 | 亚洲综合色成在线播放 | 亚洲社区在线 | 久久免费视频3 | 黄色a一级片 | 亚洲精品成人天堂一二三 | 久久激情五月丁香伊人 | 亚洲一区二区三区高清 | 国产精品视频播放 | 夜夜夜久久久 | 91精品久久久久久久久 | 欧美午夜一区二区三区免费大片 | 日韩在线观看一区 | 欧美日韩综合在线 |