char, wchar_t, char8_t, char16_t, char32_t
형식 char
, wchar_t
, char8_t
char16_t
및 char32_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 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
과 해당 포인터 및 배열 형식을 매개 변수 및 반환 값으로 사용합니다.
char8_t
, char16_t
및 char32_t
형식은 각각 8비트, 16비트 및 32비트 너비 문자를 나타냅니다. (char8_t
은(는) C++20의 새로운 기능이며 /std:c++20
또는 /std:c++latest
컴파일러 옵션이 필요합니다.) UTF-8로 인코딩된 유니코드는 char8_t
형식에 저장할 수 있습니다. char8_t
및 char
형식의 문자열은 유니코드 또는 멀티바이트 문자를 인코딩하는 데 사용되는 경우에도 내로우(좁은) 문자열이라고 합니다. 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::stringstream
및 std::cout
을(를) 포함하여 텍스트를 나타내는 다른 형식에는 좁고 넓은 문자열에 대한 특수화가 있습니다.
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기