UrlEncode von std::string

 1inline unsigned char toHex(const unsigned char x) {
 2	return x > 9 ? (x + 'A' - 10) : (x + '0');
 3}
 4
 5std::string URLEncode(const std::string &sIn)
 6{
 7	std::string sOut;
 8
 9	const size_t length = sIn.length();
10	for (size_t idx = 0; idx < length;) {
11		const char ch = sIn.at(idx);
12		if (isalnum(ch))
13		{
14			sOut.append(1, ch);
15		}
16		else if (isspace(ch) && ((ch != '\n') && (ch != '\r')))
17		{
18			sOut.append(1, '+');
19		}
20		else
21		{
22			sOut.append(1, '%');
23			sOut.append(1, toHex(ch>>4));
24			sOut.append(1, toHex(ch%16));
25		}
26		idx++;
27	}
28	return sOut;
29}