66. C++ 문자열 리터럴 ("abc"
)
1. 개요
1.1 문서 개요
이 문서는 C++에서 사용되는 문자열 리터럴("abc"
)에 대해 설명합니다. 문자열 리터럴은 컴파일 타임에 결정되는 상수 문자열 데이터이며, const char[]
타입으로 해석됩니다. 이는 C 스타일 문자열 처리에서 핵심적인 역할을 수행합니다.
2. 내용
2.1 문자열 리터럴의 정의와 타입
문자열 리터럴은 큰따옴표("
)로 감싸인 문자들의 집합이며, null 문자 \0
로 종료됩니다.
const char* str = "hello";
이 리터럴은 다음과 같은 배열로 메모리에 저장됩니다:
Index | 값 |
---|---|
0 | h |
1 | e |
2 | l |
3 | l |
4 | o |
5 | \0 |
2.1.1 리터럴의 타입과 const
C++에서 문자열 리터럴은 const char[]
타입으로 간주되며, 수정이 불가능한 메모리 영역에 저장됩니다.
2.2 문자열 리터럴과 포인터
문자열 리터럴은 일반적으로 포인터를 통해 다루게 됩니다.
const char* s = "text";
이 방식은 std::string
과는 다른 C 스타일의 문자열 처리에 해당합니다.
2.2.1 문자열 비교와 표준 함수
C 문자열 비교 시 ==
연산자는 주소 비교이며, 문자열 비교는 strcmp
를 사용합니다.
if (strcmp(s, "text") == 0) {
// 문자열 내용이 동일함
}
2.3 다양한 문자열 리터럴 종류 (C++11 이후)
C++11 이후 다양한 종류의 문자열 리터럴이 도입되었습니다:
- UTF-8 문자열:
u8"abc"
- UTF-16 문자열:
u"abc"
- UTF-32 문자열:
U"abc"
- 와이드 문자열:
L"abc"
각 리터럴은 해당 인코딩에 맞는 문자형 배열로 저장됩니다.
3. 마무리
문자열 리터럴은 C++에서 고정된 문자열을 표현하는 방식으로, null 문자로 종료되며 수정이 불가능합니다. 다양한 인코딩 지원과 포인터 연산, 표준 문자열 함수와 함께 사용되며, 저수준 문자열 처리에 필수적인 구성 요소로 작동합니다.