Null-terminated multibyte strings
널 종료 멀티바이트 문자열(NTMBS) 또는 "멀티바이트 문자열"은 널이 아닌 바이트들의 시퀀스 뒤에 값이 0인 바이트(종료 널 문자)가 오는 문자열입니다.
문자열에 저장된 각 문자는 하나 이상의 바이트를 차지할 수 있습니다. 멀티바이트 문자 문자열에서 문자를 표현하는 데 사용되는 인코딩은 로케일별로 다릅니다: UTF-8, GB18030, EUC-JP, Shift-JIS 등이 될 수 있습니다. 예를 들어, 다음 char 배열 { ' \xe4 ' , ' \xbd ' , ' \xa0 ' , ' \xe5 ' , ' \xa5 ' , ' \xbd ' , ' \0 ' } 는 UTF-8 멀티바이트 인코딩으로 문자열 "你好" 를 담고 있는 NTMBS입니다: 처음 세 바이트는 문자 你를 인코딩하고, 다음 세 바이트는 문자 好를 인코딩합니다. 동일한 문자열을 GB18030으로 인코딩하면 char 배열 { ' \xc4 ' , ' \xe3 ' , ' \xba ' , ' \xc3 ' , ' \0 ' } 가 되며, 여기서 두 문자 각각이 2바이트 시퀀스로 인코딩됩니다.
일부 멀티바이트 인코딩에서는 주어진 멀티바이트 문자 시퀀스가 "시프트 시퀀스"라고 알려진 이전 바이트 시퀀스에 따라 다른 문자를 나타낼 수 있습니다. 이러한 인코딩은 상태 의존적이라고 알려져 있습니다: 각 문자를 해석하려면 현재 시프트 상태에 대한 지식이 필요합니다. NTMBS는 초기 시프트 상태에서 시작하고 종료될 때만 유효합니다: 시프트 시퀀스가 사용된 경우, 종료 널 문자 앞에 해당 언시프트 시퀀스가 존재해야 합니다. 이러한 인코딩의 예로는 7비트 JIS, BOCU-1 및 SCSU 가 있습니다.
멀티바이트 문자 문자열은 널 종료 바이트 문자열(NTBS)과 레이아웃 호환됩니다. 즉, 문자 수를 계산하는 것을 제외하고는 동일한 기능을 사용하여 저장, 복사 및 검사할 수 있습니다. 올바른 로케일이 적용되면 I/O 함수도 멀티바이트 문자열을 처리합니다. 멀티바이트 문자열은 std::codecvt 멤버 함수, std::wstring_convert 또는 다음 로케일 의존 변환 함수들을 사용하여 와이드 문자열과 상호 변환할 수 있습니다:
목차 |
함수
멀티바이트/와이드 문자 변환 |
|
|
정의된 헤더
<cstdlib>
|
|
|
다음 멀티바이트 문자의 바이트 수를 반환
(함수) |
|
|
다음 멀티바이트 문자를 와이드 문자로 변환
(함수) |
|
|
와이드 문자를 멀티바이트 표현으로 변환
(함수) |
|
|
좁은 멀티바이트 문자열을 와이드 문자열로 변환
(함수) |
|
|
와이드 문자열을 좁은 멀티바이트 문자열로 변환
(함수) |
|
|
정의된 헤더
<cwchar>
|
|
|
상태를 고려하여 다음 멀티바이트 문자의 바이트 수를 반환
(함수) |
|
|
std::mbstate_t
객체가 초기 시프트 상태를 나타내는지 확인
(함수) |
|
|
단일 바이트 좁은 문자를 와이드 문자로 확장 (가능한 경우)
(함수) |
|
|
와이드 문자를 단일 바이트 좁은 문자로 축소 (가능한 경우)
(함수) |
|
|
상태를 고려하여 다음 멀티바이트 문자를 와이드 문자로 변환
(함수) |
|
|
상태를 고려하여 와이드 문자를 멀티바이트 표현으로 변환
(함수) |
|
|
상태를 고려하여 좁은 멀티바이트 문자열을 와이드 문자열로 변환
(함수) |
|
|
상태를 고려하여 와이드 문자열을 좁은 멀티바이트 문자열로 변환
(함수) |
|
|
정의된 헤더
<cuchar>
|
|
|
(C++20)
|
좁은 멀티바이트 문자를 UTF-8 인코딩으로 변환
(함수) |
|
(C++20)
|
UTF-8 문자열을 좁은 멀티바이트 인코딩으로 변환
(함수) |
|
(C++11)
|
좁은 멀티바이트 문자를 UTF-16 인코딩으로 변환
(함수) |
|
(C++11)
|
UTF-16 문자를 좁은 멀티바이트 인코딩으로 변환
(함수) |
|
(C++11)
|
좁은 멀티바이트 문자를 UTF-32 인코딩으로 변환
(함수) |
|
(C++11)
|
UTF-32 문자를 좁은 멀티바이트 인코딩으로 변환
(함수) |
타입
|
헤더 파일에 정의됨
<cwchar>
|
|
|
멀티바이트 문자 문자열을 순회하는 데 필요한 변환 상태 정보
(클래스) |
|
매크로
|
헤더에 정의됨
<climits>
|
|
|
MB_LEN_MAX
|
멀티바이트 문자당 최대 바이트 수
(매크로 상수) |
|
헤더에 정의됨
<cstdlib>
|
|
|
MB_CUR_MAX
|
현재 C 로캘에서 멀티바이트 문자당 최대 바이트 수
(매크로 변수) |
|
헤더에 정의됨
<cuchar>
|
|
|
__STDC_UTF_16__
(C++11)
|
mbrtoc16 및 c16rtomb에서 UTF-16 인코딩이 사용됨을 나타냄
(매크로 상수) |
|
__STDC_UTF_32__
(C++11)
|
mbrtoc32 및 c32rtomb에서 UTF-32 인코딩이 사용됨을 나타냄
(매크로 상수) |
참고 항목
|
C documentation
for
Null-terminated multibyte strings
|