ワイド文字のソースを表示
←
ワイド文字
移動先:
案内
、
検索
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
要求した操作を行うことは許可されていません。
このページのソースの閲覧やコピーができます。
'''ワイド文字'''(ワイドもじ)とは、主に[[C言語]]および[[C++]]における文法要素で、1文字あたりの[[バイト (情報)|バイト]]数を通常より多くした[[データ型]]である。 ==概要== C言語やC++の基本実行[[文字集合]]は通常、[[ASCII]]のサブセットの文字種からなる(ただし実際の[[文字コード]]が何であるかは異なりうる)。 [[漢字]]のような拡張実行文字集合は、通常[[マルチバイト文字]]として扱われるが、1文字を構成するバイト数が可変長であり、本来1つの文字でありながら複数の文字の組(あるいは[[文字列]])として扱わなければならないなどの不便がある。そうした問題を解消するために、1文字を1つの整数値で扱えるようにすることを目指したのがワイド文字である。 ==wchar_t型== [[C言語]] では[[1995年]]の ISO/IEC 9899/AMD1:1995 より、<code>wchar_t</code> 型や wchar.h、wctype.h などのヘッダーファイルが追加になった。ワイド文字は <code>wchar_t</code> というデータ型で表現する。char型を用いた文字・文字列に対応するように、ワイド文字[[定数]]は「<code>L'c'</code>」として表記する(通常の文字定数は「<code>'c'</code>」)。同様に、ワイド文字から構成される[[文字列]]をワイド文字列と呼び、そのリテラルは「<code>L"str"</code>」と表記する。 C言語での <code>wchar_t</code> は単なる <code>[[typedef]]</code>名(他の型の別名として定義されている)であるが、C++においては[[予約語]]である。コンパイラによっては、「<code>wchar_t</code>」を予約語とみなすか否かコンパイラの設定で切り替えられるものもある。 [[C99]] や [[C++]]98 の場合、ワイド文字定数・文字列リテラルには [[ISO 10646]] 文字集合の数値で表現する[[ユニバーサル文字名]]を使用することもできる。 ==char16_t, char32_t 型== [[2011年]]に改正された C/C++ の標準規格、[[C11 (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 を表現する。 wchar_t 型は環境により16ビットだったり、32ビットだったりするが、char16_t は必ず16ビットであり、char32_t は必ず32ビットである。 ==内部表現== wchar_t 型は C および C++ の双方の標準規格において、少なくとも-127から+127までまたは0から255までの範囲を表現できる数値型、ということのみ定められている(少なくともchar型と同じ大きさが必要)。charがASCIIであるとは限らなかったり、floatやdoubleが[[IEEE 754]]の単精度・倍精度であるとは限らなかったりすることと同様に、wchar_tの内部表現も[[Unicode]]である必要はない。本来は[[Code Set Independent]](符号化集合に独立)なのである。 しかし、[[Microsoft Windows|Windows]]では16ビット ([[UTF-16]])、[[Linux]]や[[OS X|Mac OS X]]では32ビット ([[UTF-32]]) であるため、その他の環境でもUnicodeを用いた符号化形式であると誤解されて、あるいは仮定してプログラムが作られることがある。そのようなプログラムは、Unicodeを用いた符号化形式とは限らない一般のUnixなどへの移植の際に問題が表面化する。なお、C99より、wchar_tが[[Unicode]]と互換性のある場合、__STDC_ISO_10646__が事前定義されると定められている。 ==D言語== [[D言語]]では、charと別に、次の2つの文字型が用意されている。 ;wchar :UTF-16を格納する16ビットの文字型 ;dchar :UTF-32を格納する32ビットの文字型 [[Category:C言語|わいともし]] [[Category:C++|わいともし]] [[Category:プログラミング言語の構文|わいともし]] [[Category:文字コード|わいともし]]
ワイド文字
に戻る。
案内メニュー
個人用ツール
ログイン
名前空間
ページ
議論
変種
表示
閲覧
ソースを表示
履歴表示
その他
検索
案内
メインページ
コミュニティ・ポータル
最近の出来事
新しいページ
最近の更新
おまかせ表示
sandbox
commonsupload
ヘルプ
ヘルプ
井戸端
notice
bugreportspage
sitesupport
ウィキペディアに関するお問い合わせ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報