char16_t, char32_t型
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/14 01:24 UTC 版)
「ワイド文字」の記事における「char16_t, char32_t型」の解説
ワイド文字の問題は、前述のように型のサイズや符号化形式が規定されておらず、プラットフォームおよび処理系依存であることである。Unicodeが普及するにつれて、移植性の問題が表面化してきた。 2011年に改訂された C/C++ の標準規格、C11 と C++11 では、新たに2つの文字型 char16_t と char32_t が導入された。これらはそれぞれ UTF-16 と UTF-32 を内部表現とする。u'c' や U'c' あるいは u"str" や U"str" のように小文字の u あるいは大文字の U を前置することで、それぞれ char16_t と char32_t の文字定数・文字列リテラルを表現する。また、u8 を前置することで UTF-8 の文字列リテラルを表現するが、char8_t 型は存在せず、従来の char 型で代用する。C++17ではUTF-8の文字リテラルをサポートするようになった。C++20ではchar8_t型がサポートされるようになる予定である。 C言語の場合char16_tおよびchar32_tはそれぞれuint_least16_tおよびuint_least32_tのtypedefエイリアスであるが、C++の場合char16_tおよびchar32_tはキーワードであり、それぞれstd::uint_least16_tおよびstd::uint_least32_tと同じサイズではあるものの、別の型として規定されている。 いずれの言語においても、char16_t型のサイズは16ビットよりも大きい可能性があるが、格納される値は16ビット幅である。同様に、char32_t型のサイズは32ビットよりも大きい可能性があるが、格納される値は32ビット幅である。
※この「char16_t, char32_t型」の解説は、「ワイド文字」の解説の一部です。
「char16_t, char32_t型」を含む「ワイド文字」の記事については、「ワイド文字」の概要を参照ください。
- char16_t, char32_t型のページへのリンク