Bagikan melalui


char, wchar_t, char8_t, char16_t, char32_t

Jenis char, , wchar_tchar8_t, char16_t, dan char32_t adalah jenis bawaan yang mewakili karakter alfanumerik, glyph nonalphanumeric, dan karakter noncetak.

Sintaks

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

Keterangan

Jenisnya char adalah jenis karakter asli di C dan C++. Jenis ini char menyimpan karakter dari kumpulan karakter ASCII atau salah satu set karakter ISO-8859, dan byte individual karakter multi-byte seperti Shift-JIS atau pengodean UTF-8 dari kumpulan karakter Unicode. Di pengkompilasi Microsoft, char adalah jenis 8-bit. Ini adalah jenis yang berbeda dari dan signed charunsigned char. Secara default, variabel jenis char dipromosikan ke int seolah-olah dari jenis signed char kecuali /J opsi pengkompilasi digunakan. Di bawah /J, mereka diperlakukan sebagai jenis unsigned char dan dipromosikan tanpa int ekstensi tanda tangan.

Jenis unsigned char ini sering digunakan untuk mewakili byte, yang bukan jenis bawaan di C++.

Jenisnya wchar_t adalah jenis karakter lebar yang ditentukan implementasi. Dalam pengkompilasi Microsoft, ini mewakili karakter lebar 16-bit yang digunakan untuk menyimpan Unicode yang dikodekan sebagai UTF-16LE, jenis karakter asli pada sistem operasi Windows. Versi karakter yang luas dari fungsi pustaka Universal C Runtime (UCRT) menggunakan wchar_t dan jenis pointer dan array-nya sebagai parameter dan mengembalikan nilai, seperti halnya versi karakter lebar dari WINDOWS API asli.

Jenis char8_t, , char16_tdan char32_t mewakili masing-masing karakter lebar 8-bit, 16-bit, dan 32-bit. (char8_t baru di C++20 dan memerlukan /std:c++20 opsi atau /std:c++latest pengkompilasi.) Unicode yang dikodekan sebagai UTF-8 dapat disimpan dalam char8_t jenis . String dan char8_tchar jenis disebut sebagai string sempit , bahkan ketika digunakan untuk mengodekan karakter Unicode atau multi-byte. Unicode yang dikodekan sebagai UTF-16 dapat disimpan dalam jenis , dan Unicode yang dikodekan char16_t sebagai UTF-32 dapat disimpan dalam char32_t jenis . String dari jenis ini dan wchar_t semuanya disebut sebagai string lebar , meskipun istilah sering merujuk khusus untuk string jenis wchar_t .

Di pustaka standar C++, basic_string jenisnya dikhususkan untuk string sempit dan lebar. Gunakan std::string ketika karakter berjenis char, std::u8string ketika karakter berjenis char8_t, std::u16string ketika karakter berjenis char16_t, std::u32string ketika karakter berjenis char32_t, dan std::wstring ketika karakter berjenis wchar_t.

Jenis lain yang mewakili teks, termasuk std::stringstream dan std::cout memiliki spesialisasi untuk string sempit dan lebar.