Re: URL decoding function in C++/C?
On Jun 11, 8:21 am, "Robbie Hatley" <bogus.addr...@no.spam> wrote:
Herman Schultz wrote:
Can you please tell me if there is a library function
in C++/C to do URL decoding?
i.e. change from:
http%3A%2F%2F
to:
http://
There is no *standard* library facility to do that.
There's almost certainly libraries out there that have
that facility, though. Google for "C++ URL library" or
similar searches.
However, it may be simpler to just to write your own.
You're kidding, of course.
Here's a big hint: Unix file names may only contain certain
characters, not others;
It has nothing to do with Unix; the only characters which cannot
occur in a Unix filename are '/' and '\0'.
[...]
Grab each "%XY" using std::string.find() and std::string.substr().
Feed each "%XY" substring into a function that returns the
character with that encoding. Then replace the "%XY" in the string
with the character Z which you just generated, by using
std::string.replace().
And this is simpler than just calling a single function in a
third party library.
Here's a program I just wrote, for the fun of it, which solves
your problem (tested, working code). (CAVEAT: This assumes that
any '%' character will be followed by a valid two-digit hexidecimal
number. If not, it will blow up. You'll have to add your own
error-checking.)
Which will likely increase the size of the code by two or three.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34