Beispiel #1
0
void encode_char(charT in, OutputIterator &out, const char *ignore = "") {
  if (((in >= 'a') && (in <= 'z')) ||
      ((in >= 'A') && (in <= 'Z')) ||
      ((in >= '0') && (in <= '9')) ||
      (in == '-') ||
      (in == '.') ||
      (in == '_') ||
      (in == '~')) {
    out++ = in;
  } else {
    auto first = ignore, last = ignore + std::strlen(ignore);
    if (std::find(first, last, in) != last) {
      out++ = in;
    } else {
      out++ = '%';
      out++ = hex_to_letter((in >> 4) & 0x0f);
      out++ = hex_to_letter(in & 0x0f);
    }
  }
}
Beispiel #2
0
void encode_char(CharT in, OutputIterator &out) {
  switch (in) {
    case 'a':
    case 'A':
    case 'b':
    case 'B':
    case 'c':
    case 'C':
    case 'd':
    case 'D':
    case 'e':
    case 'E':
    case 'f':
    case 'F':
    case 'g':
    case 'G':
    case 'h':
    case 'H':
    case 'i':
    case 'I':
    case 'j':
    case 'J':
    case 'k':
    case 'K':
    case 'l':
    case 'L':
    case 'm':
    case 'M':
    case 'n':
    case 'N':
    case 'o':
    case 'O':
    case 'p':
    case 'P':
    case 'q':
    case 'Q':
    case 'r':
    case 'R':
    case 's':
    case 'S':
    case 't':
    case 'T':
    case 'u':
    case 'U':
    case 'v':
    case 'V':
    case 'w':
    case 'W':
    case 'x':
    case 'X':
    case 'y':
    case 'Y':
    case 'z':
    case 'Z':
    case '0':
    case '1':
    case '2':
    case '3':
    case '4':
    case '5':
    case '6':
    case '7':
    case '8':
    case '9':
    case '-':
    case '.':
    case '_':
    case '~':
    case '/':
      out++ = in;
      break;
    default:
      out++ = '%';
      out++ = hex_to_letter(in >> 4);
      out++ = hex_to_letter(in & 0x0f);
      ;
  }
}