Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C/C++ 문자열 리터럴의 유형 총정리 – 종류별 특징과 예제

문자열 리터럴(String Literal)이란?

문자열 리터럴은 큰따옴표(" ")로 묶인 일련의 문자 집합을 의미합니다. C와 C++에서는 접두사(prefix)를 활용하여 다양한 인코딩 방식과 형태의 문자열 리터럴을 선언할 수 있으며, 와이드 문자열(wide-string) 리터럴에는 항상 L 접두사가 붙습니다.

문자열 리터럴의 종류

번호문자열 리터럴 및 설명
1" "
접두사가 없는 일반 문자열 리터럴 (기본 narrow 문자열)
2L" "
와이드 문자열 리터럴 (wchar_t 기반)
3u8" "
UTF-8로 인코딩된 문자열 리터럴
4u" "
UTF-16으로 인코딩된 문자열 리터럴 (char16_t)
5U" "
UTF-32로 인코딩된 문자열 리터럴 (char32_t)
6R" "
원시(raw) 문자열 리터럴 – 이스케이프 시퀀스를 해석하지 않음

각 유형의 활용 포인트

u8, u, U 접두사는 유니코드 문자를 다룰 때 사용되며, 국제화(i18n) 작업에 필수적입니다. R 접두사(원시 문자열)는 정규 표현식이나 파일 경로처럼 역슬래시(\)가 많이 들어가는 문자열을 이스케이프 처리 없이 그대로 작성할 수 있어 가독성을 크게 높여 줍니다.

C++ 문자열 리터럴 예제

다음은 C++에서 와이드 문자열 리터럴(L 접두사)을 사용하는 예제입니다. wcslen()으로 문자열 길이를 구하고, towupper() 함수로 각 문자를 대문자로 변환하여 출력합니다.

#include <cwchar>
#include <cwctype>
#include <iostream>

using namespace std;
int main() {

    wchar_t s[] = L"hello world!";
    wcout << L"The uppercase string : "" << L"\"is ";

    for (int i = 0; i < wcslen(s); i++)
        putwchar(towupper(s[i]));

    return 0;
}

실행 결과

The uppercase string : ""is HELLO WORLD!

코드 설명

wchar_t s[] = L"hello world!"; 구문은 L 접두사를 붙여 와이드 문자열 리터럴로 배열을 초기화합니다. 이후 반복문 안에서 towupper()를 호출해 소문자 'hello world!'를 대문자 'HELLO WORLD!'로 변환하고, putwchar()로 한 글자씩 출력합니다. 와이드 문자를 다룰 때는 일반 cout 대신 wcout을 사용해야 한다는 점도 기억해 두면 좋습니다.