in sdk/src/utils/Utils.cc [70:98]
std::string AlibabaCloud::PDS::UrlDecode(const std::string & src)
{
std::stringstream unescaped;
unescaped.fill('0');
unescaped << std::hex;
size_t safeLength = src.size();
const char *safe = src.c_str();
for (auto i = safe, n = safe + safeLength; i != n; ++i)
{
char c = *i;
if(c == '%')
{
char hex[3];
hex[0] = *(i + 1);
hex[1] = *(i + 2);
hex[2] = 0;
i += 2;
auto hexAsInteger = strtol(hex, nullptr, 16);
unescaped << (char)hexAsInteger;
}
else
{
unescaped << *i;
}
}
return unescaped.str();
}