C++ Wide String

Seongcheol Jeon·2024년 11월 17일
0

CPP

목록 보기
17/47
post-thumbnail

와이드 문자열 - wstring

string유니코드 (unicode)를 지원하지만, 상황에 맞게 적절한 데이터 형식과 인코딩을 선택하여 유니코드 문자열을 처리해야 하는 번거로움이 있다.

그래서 C++11부터는 std::wstring이라는 와이드 문자열 형식을 제공한다. wstring은 와이드 문자 형식인 wchar와 같은 맥락으로 문자열을 지원하는 형식이라고 생각하면 된다.

wstring으로 유니코드 문자열을 저장하고 출력하는 간단한 예를 살펴보자.

다음 코드에서 setlocale 함수는 프로그램의 지역(locale)을 설정한다. 첫 번째 인자로 전달한 LC_ALL모든 지역을 의미한다.
그리고 wstring으로 유니코드 문자열을 초기화하는데, 이때 접두어 L은 문자열 리터럴이 와이드 문자열임을 나타낸다. 그리고 유니코드 문자열을 출력할 때는 와이드 문자열0 출력 스트림인 wcout을 사용한다.

#include <iostream>
#include <string>

using namespace std;

int main()
{
    // 프로그램의 지역 설정
    setlocale(LC_ALL, "");

    // 유니코드 문자열 초기화
    wstring korString = L"한글 문자열";

    // 유니코드 문자열 출력
    wcout << korString << endl;

    return 0;
}

실행 결과

한글 문자열

이처럼 와이드 문자열은 유니코드를 더 직관적으로 표현할 수 있으며, 유니코드 문자열 처리에 편리한 함수도 제공한다. 와이드 문자열 형식은 유니코드 인코딩 방식에 따라 wstring, u16string, u32string 등을 사용할 수 있다.


Unicode

유니코드는 전 세계의 모든 문자를 표현하기 위한 표준 문자 인코딩 시스템이다. 이전에는 문자를 표현하기 위해 다양한 인코딩 방식을 사용했는데, 이때 언어나 지역에 따라 서로 다른 인코딩 방식 때문에 발생하는 호환성 문제를 해결하고자 유니코드가 만들어졌다.

유니코드는 모든 문자을 유일한 코드 포인트(code point)로 매핑하는 국제 표준이다. 예를 들어 알파벳 AU+0041, 한글 U+AC00이라는 코드 포인트로 표현한다. 이를 통해 어떤 문자라도 일관되게 표현할 수 있다.

유니코드는 다국어를 지원하는 프로그램을 개발할 때 필수이다.

0개의 댓글