Home >Backend Development >C++ >How to Encode and Decode URLs in C ?

How to Encode and Decode URLs in C ?

Barbara Streisand
Barbara StreisandOriginal
2024-12-08 01:11:12151browse

How to Encode and Decode URLs in C  ?

Encoding and Decoding URLs in C

Many applications handle data that needs to be transmitted across the network via URLs. In these scenarios, it is crucial to encode the URL to ensure that special characters and spaces are represented correctly.

Encoding a URL

Here's a C function that encodes a URL:

#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();
}

Decoding a URL (Exercise)

As mentioned in the answer to the original question, implementing URL decoding is left as an exercise for you. This function would take an escaped URL and convert it back to its original format.

Example Usage

To encode a URL, simply call the url_encode function passing in the input string.

To decode a URL, implement the decoding function and call it with the escaped string as the input.

The above is the detailed content of How to Encode and Decode URLs in C ?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn