#include <iostream>
#include <sstream>
#include <string>

namespace ztool {
// 用于将URL编码的特殊字符转换为对应的ASCII字符
std::string URLDecode(const std::string &encoded) {
  std::ostringstream decoded;
  std::string::const_iterator it = encoded.begin();
  while (it != encoded.end()) {
    char c = *it++;
    if (c == '%' && it != encoded.end()) {
      // 将%后面的两个字符解析为16进制数，并将其转换为字符
      int hexValue;
      std::istringstream hexStream(std::string(it, it + 2));
      if (hexStream >> std::hex >> hexValue) {
        decoded << static_cast<char>(hexValue);
        it += 2;
      } else {
        // 解码失败，保留原始字符
        decoded << c;
      }
    } else {
      // 非%字符，保留原始字符
      decoded << c;
    }
  }
  return decoded.str();
}
} // namespace ztool
