js escape() in c++

Tach HaBo-User und frohe Silverstern.
Ich mach's kurz.

Da ichin C++ eine Funktion brauche wie in JavaScript escape(),
(Sonderzeichen in ihre charcodes umsetzen,) und bei Google
nichts fand, dachte ich, ich schreibe sie mal selbst...

Code:
inline cc_escape (string in) {
  string rep = "&";
  int pos;
  while (true) {
    pos = in.find(rep);
    if (pos == -1) {
      break;
    } else {
      in.erase(pos, rep.length());
      in.insert(pos, "%26");
    }
  }
  return in;
}

Jetzt sind es aber sicher mehr Zeichen als & und ich denke, ich
setze die Zeichen mit ihrem Ersatz in ein array und lasse die
Ausführung in der Funktion für jedes Element durchlaufen.
Jetzt wollte nach einer charcode-Tabelle fragen, aus der ich
am besten in meinen Source abtippen kann.

http://coding.binon.net/index.htm?jscript/charcode.htm

Bis ich hier alle Zeichen mit ihrem Ersatz (der nochd azu in einem
tooltipp angezeigt wird) in meinem Source habe, haben wir
schon nächstes Silvester.

Hoffe, jemand kann mir einelängst existierende Funktion dafür nennen,
um mir die Mühe zu ersparen oder eine nützlichere Charcode-Tabelle.

danke dann...
 
Kannst du net einfach ord() und chr() verwenden, wie jeder andere auch? :P
 
Whoops, my bad... ich sehe gerade, die Funktionen gab's bei C++ gar net. :rolleyes:

Aber da Characters im Grunde genommen ja nur andere Darstellungsformen von Integern sind, kannst du's wohl mit einfachen Typecasts machen:

Code:
#define chr(n) ((char)(n))
#define ord(c) ((int)(unsigned char)(c))
So zumindest das Ergebnis meiner Suche eben. C++ ist nicht mein Bier *g
 
Ich brauche aber eigentlich nur eine Funktion, die in einem string
sämtliche Zeichen mit ihren charcodes ersetzt,
die der Firefox schnell in seiner Adressleiste ersetzen würde.

string req = "POST /aktualisieren.php HTTP/1.0\r\nHost: meinserver.de\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: ";
string par = "hallo?geht's dir noch gut? Außerdem...");
string post = "test="+cc_charcode(par);
req += post.length()+"\r\n\r\n";
req += post;

post müsste dann sein:
"test=hallo%3F%20geht's%20dir%20noch%20gut%3F%20Außerdem..."

Aber auch nur die Zeichen, die der Firefox in der
Adressleiste schenll ersetzen würde...

/* edit */

Code:
inline string cc_escape (string in) {
  string rep;
  string wit;
  int pos;
  int run = 1;
  while (true) {
    if (run == 1) {rep = "\""; wit = "%22";}
    else if (run == 2) {rep = "%"; wit = "%25";}
    else if (run == 3) {rep = "&"; wit = "%26";}
    else if (run == 4) {rep = "?"; wit = "%3F";}
    else if (run == 5) {rep = "="; wit = "%3D";}
    else {break;}
    while (true) {
      pos = in.find(rep);
      if (pos == -1) {
        break;
      } else {
        in.erase(pos, rep.length());
        in.insert(pos, wit);
      }
    }
    run++;
  }
  return in;
}

OK, diese Funktion ist etwas peinlich.
Das größte Problem ist aber, das ich " nicht ersetzen kann mit
%22, das Programm scheint "\"" nicht mitzumachen!
Wenn ich ' stattdessen reinsetze, funktioniert es!
 
Zurück
Oben