char, wchar_t, char8_t, char16_t, char32_t

형식char, wchar_t, char8_tchar16_tchar32_t 영숫자 문자, 영숫자가 아닌 문자 및 인쇄되지 않은 문자를 나타내는 기본 제공 형식입니다.

구문

char     ch1{ 'a' };  // or { u8'a' }
wchar_t  ch2{ L'a' };
char16_t ch3{ u'a' };
char32_t ch4{ U'a' };

설명

C char 및 C++의 원래 문자 형식이었습니다. 이 형식은 char ASCII 문자 집합 또는 ISO-8859 문자 집합의 문자와 Shift-JIS 또는 유니코드 문자 집합의 UTF-8 인코딩과 같은 멀티바이트 문자의 개별 바이트를 저장하는 데 사용할 수 있습니다. Microsoft 컴파일러 char 에서 8비트 형식입니다. 이 형식은 둘 다 signed char 와 뚜렷한 형식입니다 unsigned char. 기본적으로 형식 char 의 변수는 컴파일러 옵션을 사용하지 않는 한 /J 형식 signed char 에서 온 것처럼 승격 int 됩니다. 아래에서 /J형식 unsigned char 으로 처리되고 서명 확장 없이 승격됩니다 int .

이 형식 unsigned char 은 C++의 기본 제공 형식이 아닌 바이트를 나타내는 데 자주 사용됩니다.

이 형식은 wchar_t 구현에서 정의한 와이드 문자 형식입니다. Microsoft 컴파일러에서는 Windows 운영 체제의 네이티브 문자 형식인 UTF-16LE로 인코딩된 유니코드를 저장하는 데 사용되는 16비트 와이드 문자를 나타냅니다. UCRT(유니버설 C 런타임) 라이브러리 함수의 와이드 문자 버전은 네이티브 Windows API의 와이드 문자 버전과 마찬가지로 해당 포인터 및 배열 형식을 매개 변수 및 반환 값으로 사용합니다 wchar_t .

, char16_tchar32_t 형식은 char8_t각각 8비트, 16비트 및 32비트 너비 문자를 나타냅니다. (char8_tC++20의 새로운 기능이며 또는 /std:c++latest 컴파일러 옵션이 필요합니다/std:c++20.) UTF-8로 인코딩된 유니코드는 형식에 char8_t 저장할 수 있습니다. char8_t 유니코드 또는 멀티 바이트 문자를 인코딩하는 데 사용되는 경우에도 문자열 및 char 형식을 좁은 문자열이라고 합니다. UTF-16으로 인코딩된 유니코드는 형식에 char16_t 저장할 수 있으며, UTF-32로 인코딩된 유니코드는 형식에 char32_t 저장할 수 있습니다. 이러한 형식의 문자열은 wchar_t 모두 와이드 문자열이라고 하지만, 용어는 형식의 wchar_t 문자열을 구체적으로 참조하는 경우가 많습니다.

C++ 표준 라이브러리 basic_string 에서 형식은 좁은 문자열과 와이드 문자열 모두에 대해 특수화됩니다. 문자가 형식char일 때, std::u8string 문자가 형식char8_t일 때, std::u16string 문자가 형식char16_t일 때, std::u32string 문자가 형식일 때, std::wstring 문자가 형식wchar_tchar32_t인 경우를 사용합니다std::string. 좁고 std::cout 넓은 문자열에 대한 특수화를 포함하여 std::stringstream 텍스트를 나타내는 다른 형식입니다.