Escape Zeichen



  • Sollte man Escape Zeichen in einfachen anführungszeichen '\a' oder in "\a" normalen speichern ?
    was sind die unterschiede und wie sieht es vom speicher her aus '' ist ja speicher vom zeichen und "" speicher vom zeichen +1 für nullterminierung..



  • es kommt drauf an was du vorhast.

    ich persönlich würde mir konstanten für die escapesymbole schreiben und das wären dann chars, ist am flexibelsten

    interpretiert werden müsste beides gleich, da \x als escape sequenz angesehen wird und daher als ein char interpretiert wird

    der unterschied dürfte sich echt nur bei der größe auswirken und dann auch nur wenn du die nicht zwischen 2 std::strings reinpackst



  • Escapesequenzen sind einfach andere Schreibweisen fuer ASCII-Zeichen in einem char/String Literal.

    Welches Literal du brauchst (oder welchen Datentyp zum Speichern) ist davon abhaengig was du machen willst.
    Merke aber: Das Schreiben eines Zeichens in einen Stream ( cout << ch 😃 ) duerfte etwas schneller sein als die eines Strings (wie kurz er auch sein moege).



  • Sone schrieb:

    Escapesequenzen sind einfach andere Schreibweisen fuer ASCII-Zeichen in einem char/String Literal.

    Möööp. Deine Wette könnte man dir stündlich um die Ohren hauen.



  • Was genau stimmt daran denn nicht?

    PS: Michael E. und Sone geben ein schönes Paar ab. 🤡



  • Michael E. schrieb:

    Sone schrieb:

    Escapesequenzen sind einfach andere Schreibweisen fuer ASCII-Zeichen in einem char/String Literal.

    Möööp. Deine Wette könnte man dir stündlich um die Ohren hauen.

    Aber es stimmt doch. Es sind Zeichenkombinationen fuer Zeichen (überwiegend Whitespaces), die man nicht im Code in das Literal "schreiben" kann, ohne die Syntax zu beleidigen:

    '\n' // <- Ok
    '
    ' // <- Was weiss ich welcher Fehler jetzt kommt.
    

    Aber natürlich haste Recht. Es ist keine andere Schreibweise, falsch ausgedrückt. Es ist eine Zeichenkombination die ein ASCII-Zeichen ersetzt.

    \n ersetzt das ASCII-Zeichen an Position 10 in der Tabelle, ein Befehl zum Zeilenvorschub ( ➡ newline) in bspw. Konsolen.

    Bspw. ist

    std::cout << '\n';
    

    dasselbe wie

    std::cout << static_cast<char>(10);
    

    @Eisflamme: Der hasst mich. Und zurecht.



  • Sone: An der Formulierung "andere Schreibweise" störe ich mich gar nicht. Es sind die ASCII-Zeichen, die mich stören. Weder sind Escape-Sequenzen auf ASCII beschränkt, noch muss ASCII überhaupt abgebildet werden. Genauso gut könnte ich sagen, Escape-Sequenzen sind nur eine andere Schreibweise für EBCDIC- oder UTF8-Zeichen.

    Es sind Zeichenkombinationen fuer Zeichen (überwiegend Whitespaces), die man nicht im Code in das Literal "schreiben" kann, ohne die Syntax zu beleidigen

    Warum schränkst du schon wieder ein? Mit Escape-Sequenzen kann man alle Zeichen umschreiben, nicht nur die, die du nicht so schön tippen kannst.


Anmelden zum Antworten