首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >对C++中的URL进行编码/解码

对C++中的URL进行编码/解码
EN

Stack Overflow用户
提问于 2008-09-30 19:21:21
回答 19查看 144.4K关注 0票数 95

有没有人知道有什么好的C++代码可以做到这一点?

EN

回答 19

Stack Overflow用户

发布于 2013-07-18 03:40:36

前几天,我遇到了这个问题的一半编码问题。对可用的选项不满意,在看了this C sample code之后,我决定推出我自己的C++ url编码功能:

代码语言:javascript
复制
#include <cctype>
#include <iomanip>
#include <sstream>
#include <string>

using namespace std;

string url_encode(const string &value) {
    ostringstream escaped;
    escaped.fill('0');
    escaped << hex;

    for (string::const_iterator i = value.begin(), n = value.end(); i != n; ++i) {
        string::value_type c = (*i);

        // Keep alphanumeric and other accepted characters intact
        if (isalnum(c) || c == '-' || c == '_' || c == '.' || c == '~') {
            escaped << c;
            continue;
        }

        // Any other characters are percent-encoded
        escaped << uppercase;
        escaped << '%' << setw(2) << int((unsigned char) c);
        escaped << nouppercase;
    }

    return escaped.str();
}

解码功能的实现留给读者作为练习。:P

票数 90
EN

Stack Overflow用户

发布于 2008-09-30 19:41:49

回答我自己的问题。

libcurl有用于编码的curl_easy_escape

对于解码,curl_easy_unescape

票数 85
EN

Stack Overflow用户

发布于 2011-01-28 08:52:06

代码语言:javascript
复制
string urlDecode(string &SRC) {
    string ret;
    char ch;
    int i, ii;
    for (i=0; i<SRC.length(); i++) {
        if (int(SRC[i])==37) {
            sscanf(SRC.substr(i+1,2).c_str(), "%x", &ii);
            ch=static_cast<char>(ii);
            ret+=ch;
            i=i+2;
        } else {
            ret+=SRC[i];
        }
    }
    return (ret);
}

不是最好的,但工作得很好;-)

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/154536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档