41 result.reserve(value.size() / 3 + (value.size() % 3));
43 for (std::size_t i = 0; i < value.size(); ++i) {
44 if (value[i] ==
'%' && i + 2 < value.size()) {
45 char hex[] = { value[i + 1], value[i + 2],
'\0' };
46 char decoded_chr =
static_cast<char>(std::strtol(hex,
nullptr, 16));
47 result += decoded_chr;
49 }
else if (value[i] ==
'+') {