Compartilhar via


Literais de caracteres C++

Um caractere literal é composto de uma constante de caractere. Ele é representado pelo caractere entre aspas simples. Há dois tipos de literais de caractere:

  • Literais de caractere estreito do tipo char, por exemplo 'a'

  • Literais de caractere largo do tipo wchar_t, por exemplo L'a'

O caractere usado para um literal de caractere pode ser qualquer caractere gráfico, exceto os caracteres reservados como nova linha ('\n'), barra invertida ('\'), aspas simples (') e aspas duplas (“). Os caracteres reservados são especificados usando uma sequência de escape.

Sequências de Escape

Existem cinco tipos de sequências de escape: simples, octais, hexadecimais, Unicode (UTF-8) e Unicode (UTF-16). As sequências de escape podem ser qualquer uma das seguintes:

Valor

Sequência de escape

nova linha

\n

tabulação horizontal

\t

tabulação vertical

\v

backspace

\b

retorno de carro

\r

avanço de página

\f

alerta

\a

barra invertida

\\

ponto de interrogação

? ou \?

aspas simples

\'

aspas duplas

\"

o caractere nulo

\0

octal

\ooo

hexadecimal

\xhhh

Unicode (UTF-8)

\uxxxx

Unicode (UTF-16)

\Uxxxxxxxx

O código a seguir mostra alguns exemplos de caracteres de escape.

#include <iostream>
using namespace std;

int main() {
    char newline = '\n';
    char tab = '\t';
    char backspace = '\b';
    char backslash = '\\';
    char nullChar = '\0';

    cout << "Newline character: " << newline << "ending" << endl; // Newline character:
                                                                  //  ending
    cout << "Tab character: " << tab << "ending" << endl; // Tab character : ending
    cout << "Backspace character: " << backspace << "ending" << endl; // Backspace character : ending
    cout << "Backslash character: " << backslash << "ending" << endl; // Backslash character : \ending
    cout << "Null character: " << nullChar << "ending" << endl; //Null character:  ending
}

Para obter informações sobre as sequências de escape UTF-16 com \U, consulte literais String C++.

Específico da Microsoft

Uma sequência de escape octal é uma barra invertida seguida por uma sequência de até 3 dígitos octais. O comportamento de uma sequência de escape octal que contêm mais de três dígitos é definido pela implementação. Elas podem gerar resultados surpreendentes. Por exemplo:

char c1 = '\100';     // char '@'
char c2 = '\1000';   // char '0' 

As sequências de escape que contêm caracteres não octais são avaliadas como o último caractere não octal. Por exemplo:

char c3 = '\009'// char '9'
char c4 = '\089'     // char '9'
char c5 = '\qrs'     // char 's'

Uma sequência de escape hexadecimal é uma barra invertida, seguida pelo caractere x, seguido por uma sequência de dígitos hexadecimais. Uma sequência de escape que não contém nenhum dígito hexadecimal causa o erro de compilador C2153: “constantes hex devem possuir pelo menos um dígito hex”. Uma sequência de escape que tem caracteres hexadecimais e não hexadecimais é avaliada como o último caractere não hexadecimal. O valor hexadecimal mais alto é 0xff.

char c1 = '\x0050';  // char 'P'
char c2 = '\x0pqr';  // char 'r'

FIM de Específico da Microsoft

O caractere de barra invertida (\) é um caractere de continuação de linha, quando colocado no final de uma linha. Se desejar que um caractere de barra invertida seja exibido como uma literal de caractere, você deve digitar duas barras invertidas em uma linha (\\). Para obter mais informações sobre o caractere de continuação de linha, consulte Fases de translação.

Caracteres Unicode

Os caracteres Unicode que têm uma codificação UTF-8 são representados com o prefixo \u. Por exemplo:

const wchar_t chr1 = L'\u79c1';

Em muitos casos, você pode simplesmente inserir o caractere desejado:

const wchar_t chr2 = L'私'; 

Configurações do editor do Visual C++

Por padrão, o editor de código do Visual C++ usa a codificação que é apropriada para sua localidade. Nas versões em inglês do Visual Studio a página de código padrão é 1252. Entretanto, se adicionar um tipo diferente de caractere, por exemplo, um caractere Unicode e salvar o arquivo, você verá a mensagem: "Não foi possível salvar alguns caracteres Unicode deste arquivo na página de código atual". Deseja salvar novamente o arquivo como Unicode a fim de manter os dados?" Você pode salvar o arquivo com alguma outra codificação. Você pode também alterar a página de código para um arquivo na caixa de diálogo Arquivo, Opções de Salvamento Avançadas. Você pode desligar a detecção automática de caracteres Unicode desmarcando "Detecção automática de codificação UTF-8 sem assinatura" na página de opções Ferramentas, Opções, Editor de texto, Geral.

Consulte também

Referência

Literais C++