2016-09-12 2 views
1

Ich muss Escape-Sequenzen in nicht-literalen Strings (so dass sie in mehrere Zeichen, die erste \ und die anderen sind nur , r oder sogar oktal Codes etc.) auf das tatsächliche Zeichen durch dargestellt werden diese Escape-Sequenz.Wie konvertiert man ein Zeichen in die zugehörige Escape-Sequenz?

Mein erster Gedanke war, dass es mit einem Makro möglich wäre (wie #define to_escape(x) '\(x)', die nicht funktioniert), aber ich frage mich, ob es tatsächlich einen Weg wie diesen gibt und ob es bessere Möglichkeiten gibt.

Natürlich könnte ich eine einfache switch-Anweisung für Escapes wie \a, und ähnliche verwenden, aber wie würde ich dann alle oktalen und hexadezimalen Escapezeichen behandeln?

+0

Was ist das "tatsächliche Zeichen", das durch "\ n" dargestellt wird? Oder, um es allgemeiner auszudrücken, was genau wollen Sie das Ergebnis dieser Transformation haben? Bedenke, dass "\ n" ** ein Charakter ist. –

+0

Ich möchte, dass es dasselbe Zeichen ist, das Sie erhalten, wenn Sie diese Sequenz manuell als Zeichenfolge oder Zeichenliteral eingeben, d. H. Eine neue Zeile für '\ n', eine Registerkarte für '\ t' und so weiter. – user6245072

+0

Nochmal: Was willst du bekommen, wenn du '\ n'' siehst? "Newline" zu nennen, beantwortet das nicht. Es ersetzt nur ein tragbares Zeichen durch einen nicht tragbaren Namen. –

Antwort

1

können Sie für diese Byte-Zuordnung gehen

\' single quote   byte 0x27 in ASCII encoding 
\" double quote   byte 0x22 in ASCII encoding 
\? question mark   byte 0x3f in ASCII encoding 
\\ backslash    byte 0x5c in ASCII encoding 
\a audible bell   byte 0x07 in ASCII encoding 
\b backspace    byte 0x08 in ASCII encoding 
\f form feed - new page byte 0x0c in ASCII encoding 
\n line feed - new line byte 0x0a in ASCII encoding 
\r carriage return   byte 0x0d in ASCII encoding 
\t horizontal tab   byte 0x09 in ASCII encoding 
\v vertical tab   byte 0x0b in ASCII encoding 

überprüfen, ob ihre Adressen ihre Hexa-Adressen übereinstimmen und Sie können die folgenden Zeichen abzurufen.

+0

Dies ist im Grunde die Switch-Anweisung, die ich für Single-Character-Escapes beschrieben habe. Aber wie gehe ich mit numerischen Escapes um, wie '\ 077'? – user6245072

+0

Sie können nicht über ein Zeichen iterieren, da es nur die Möglichkeit bietet, Bits dieses Zeichens zu manipulieren, um das zu erzeugen, nach dem Sie suchen. Dies sind einige der Escapezeichen. Google und nach ihrer vollständigen Liste suchen. @ user6245072 –

Verwandte Themen