C++ 문자 리터럴
문자 리터럴은 상수 문자로 구성됩니다. 문자 리터럴은 작은따옴표로 묶인 문자로 표현됩니다. 다음과 같은 두 가지 종류의 문자 리터럴이 있습니다.
char 형식의 좁은 문자 리터럴(예: 'a')
wchar_t 형식의 와이드 문자 리터럴(예: L'a')
문자 리터럴에는 줄 바꿈('\n'), 백슬래시(\), 작은따옴표('), 큰따옴표(") 등의 예약된 문자를 제외하고 모든 그래픽 문자를 사용할 수 있습니다. 예약된 문자는 이스케이프 시퀀스로 지정됩니다.
이스케이프 시퀀스
이스케이프 시퀀스에는 단순, 8진수, 16진수, 유니코드(UTF-8) 및 유니코드(UTF-16)의 5가지 종류가 있습니다. 이스케이프 시퀀스의 종류는 다음과 같습니다.
값 |
이스케이프 시퀀스 |
---|---|
줄 바꿈 |
\n |
가로 탭 |
\t |
세로 탭 |
\v |
백스페이스 |
\b |
캐리지 리턴 |
\r |
폼 피드 |
\f |
경고 |
\a |
백슬래시 |
\\ |
물음표 |
? 또는 \? |
작은따옴표 |
\' |
큰따옴표 |
\" |
null 문자 |
\0 |
8진수 |
\ooo |
16진수 |
\xhhh |
유니코드(UTF-8) |
\uxxxx |
유니코드(UTF-16) |
\Uxxxxxxxx |
다음 코드는 이스케이프된 문자에 대한 몇 가지 예제를 보여 줍니다.
#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
}
\U가 포함된 UTF-16 이스케이프 시퀀스에 대한 내용은 C++ 문자열 리터럴을 참조하세요.
Microsoft 전용
8진수 이스케이프 시퀀스는 백슬래시와 그 뒤 최대 3자리의 8진수 문자열 시퀀스입니다. 4개 이상의 숫자를 포함하는 8진수 이스케이프 시퀀스 동작은 구현 시 정의되며 놀라운 결과를 가져올 수 있습니다. 예를 들면 다음과 같습니다.
char c1 = '\100'; // char '@'
char c2 = '\1000'; // char '0'
8진수 이외의 문자를 포함하는 이스케이프 시퀀스는 마지막 8진수 아닌 문자로 계산됩니다. 예를 들면 다음과 같습니다.
char c3 = '\009'// char '9'
char c4 = '\089' // char '9'
char c5 = '\qrs' // char 's'
16진수 이스케이프 시퀀스는 백슬래시, 문자 x, 일련의 16진수 숫자의 순서로 구성됩니다. 16진수 숫자가 포함되지 않은 이스케이프 시퀀스는 컴파일러 오류 C2153: "16진 상수에는 16진수가 적어도 하나는 있어야 합니다."라는 오류를 발생합니다. 16진수와 비16진수 문자가 있는 이스케이프 시퀀스는 마지막 비16진수 문자로 평가됩니다. 최대 16진수 값은 0xff입니다.
char c1 = '\x0050'; // char 'P'
char c2 = '\x0pqr'; // char 'r'
Microsoft 전용 종료
백슬래시 문자(\)는 줄의 끝에 위치하면 줄 연속 문자가 됩니다. 백슬래시 문자가 문자 리터럴로 표시되도록 하려면 두 개의 백슬래시(\\)를 연속하여 입력해야 합니다. 줄 연속 문자에 대한 자세한 내용은 변환 단계를 참조하세요.
유니코드 문자
UTF-8 인코딩을 포함하는 유니코드 문자는 \u 접두사로 표시됩니다. 예를 들면 다음과 같습니다.
const wchar_t chr1 = L'\u79c1';
대부분 원하는 문자를 정확히 입력할 수 있습니다.
const wchar_t chr2 = L'私';
Visual C++ 편집기 설정
기본적으로 Visual C++ 코드 편집기는 사용자 로캘에 적합한 인코딩을 사용합니다. 영어 버전의 Visual Studio 기본 코드 페이지는 1252입니다. 그러나 유니코드 문자 같은 다른 종류의 문자를 추가하고 파일을 저장하는 경우 “이 파일의 일부 유니코드 문자를 현재 코드 페이지로 저장할 수 없습니다. 데이터를 유지하기 위해 이 파일을 유니코드로 다시 저장하시겠습니까?"라는 메시지가 표시됩니다. 다른 인코딩을 사용하여 파일을 저장할 수 있습니다. 파일, 고급 저장 옵션 대화 상자에서 파일의 코드 페이지를 변경할 수도 있습니다. 도구, 옵션, 텍스트 편집기, 일반 옵션 페이지에서 "서명 없는 UTF-8 인코딩 자동 검색"을 선택 취소하여 유니코드 문자에 대한 자동 검색을 해제할 수 있습니다.