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' };

설명

char 형식은 C와 C++의 독창적인 문자 형식이었습니다. 이 형식은 char ASCII 문자 집합 또는 ISO-8859 문자 집합의 문자와 Shift-JIS 또는 유니코드 문자 집합의 UTF-8 인코딩과 같은 멀티바이트 문자의 개별 바이트를 저장합니다. Microsoft 컴파일러에서 char은(는) 8비트 형식입니다. 이는 signed charunsigned 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과 해당 포인터 및 배열 형식을 매개 변수 및 반환 값으로 사용합니다.

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

C++ 표준 라이브러리에서 basic_string 형식은 좁은 문자열과 와이드 문자열 모두에 특화되었습니다. 문자가 char 유형인 경우 std::string을 사용하고, 문자가 char8_t 유형인 경우 std::u8string을 사용하고, 문자가char16_t 유형인 경우 std::u16string을 사용하고, 문자가 char32_t 유형인 경우 std::u32string을 사용하고, 문자가 wchar_t 유형인 경우 std::wstring을 사용합니다.

std::stringstreamstd::cout을(를) 포함하여 텍스트를 나타내는 다른 형식에는 좁고 넓은 문자열에 대한 특수화가 있습니다.