Secvențe Escape


Etichete: nicio etichetă

Secvențele escape au fost folosite inițial în limbajele C/C++; în prezent sunt folosite în numeroase alte limbaje, precum Java, C# sau PHP. Ele sunt succesiuni de caractere care cu alt înțeles decât cel direct atunci când sunt folosite într-un literal caracter sau șir de caractere, fiind înlocuite cu caractere care nu ar putea fi folosite în mod direct.

Toate secvențele escape încep cu caracterul \ – numit caracter escape și conțin două sau mai multe caractere. Cele care urmează după \ definește caracterul care va apărea în constanta literal. De exemplu, \n este o secvență escape care reprezintă caracterul newline – trecere la rând nou.

De ce sunt necesare?

Să scriem un program care să afișeze pe ecran textul Hamlet a spus "A fi, sau a nu fi". – atenție la ghilimelele! După cum știm, un literal de tip șir de caractere este delimitat cu caracterul ghilimele ", deci ar trebui să folosim o instrucțiune C++ de felul următor:

cout << "Hamlet a spus "A fi, sau a nu fi".";

Această instrucțiune este însă greșită: compilatorul identifică șirul "Hamlet a spus ", iar șirul A fi, sau a nu fi nu are înțeles sintactic! Pentru a fi corect vom folosi pentru caracterul " din șir o secvență escape, adică \":

cout << "Hamlet a spus \"A fi, sau a nu fi\".";

Mai sus, secvența escape \" este pentru caracterul " – acesta având alt înțeles pentru compilator.

Lista secvențelor escape

_ Secvența escape _ Cod ASCII _ Caracter
\a 7 Alertă, Beep
\b 8 Backspace
\e 27 Escape
\f 12 Formfeed
\n 10 NewLine
\r 13 Carriage Return
\t 9 Tab orizontal
\v 11 Tab vertical
\\ 92 Backslash
\" 34 Ghilimele
\' 39 Apostrof
\? 63 Semn de întrebare
\0 0 Caracterul nul, cu înțeles special în șirurile de caractere
\nnn oricare Caracterul cu codul egal cu valoarea octală nnn
\xhh oricare Caracterul cu codul egal cu valoarea hexazecimală hh

Există de asemenea secvențe escape pentru reprezentarea caracterelor non ASCII.

Exemple

Utilizarea ghilimelelor într-un șir de caractere

#include <iostream>
using namespace std;
int main()
{
    cout << "Hamlet a spus \"A fi, sau a nu fi\".";
    return 0;
}

Trecerea la rând nou

#include <iostream>
using namespace std;
int main()
{
    cout << "Vrei 10 la info?\nHai pe pbinfo";
    return 0;
}

Secvența escape poate fi folosită într-un caracter (ex. '\n') sau într-un șir de caractere (ex. "\n"). Următoarele două programe acu același efect ca cel de mai sus:

#include <iostream>
using namespace std;
int main()
{
    cout << "Vrei 10 la info?" << "\n" << "Hai pe pbinfo";
    return 0;
}
#include <iostream>
using namespace std;
int main()
{
    cout << "Vrei 10 la info?" << '\n' << "Hai pe pbinfo";
    return 0;
}