Month: 2021年8月
7.1.2 サロゲート・ペア⇔Unicodeスカラ値変換
UTF-16のサロゲートとUnicodeスカラ値(UTF-32)の相互変換を行います。今回も前回と同様、C++11以降かつint型が32ビットの処理系を仮定しています。 定数定義は前回のものを引き継ぎますが、以下のものを […]
7.1.1 UTF-16 符号単位がサロゲートか否かを判定する。
C++11から導入されたchar16_t型は、<uchar>で__STDC_UTF_16__マクロが定義されている場合にUTF-16のコードポイントを保持する文字型になります。ただし、C++20からは__ST […]
7.5 文字列終端ナル文字へのポインタ
次のテンプレート関数は、文字列の終端にあるナル文字へのポインタを返します。文字列は、char型またはwchar_t型の配列はもちろん、他の文字様のデータを扱うための型であってもかまいません。ただし、その型に対するstd: […]
7.4 図形文字に対応する制御文字コードを返す。
次のメタ関数は、ASCII 図形文字に対応する ASCII 制御文字コードを返します。 [crayon-673ef5155a71c154772113/] これだけでも構わないのですが、有効なCの値の範囲は0x3fから0x […]
7. 文字・文字列・文字コードに関する関数・テンプレート
- 更新日:
- 公開日:
元ネタ 7.1 Unicode関数・テンプレート集 7.1.1 UTF-16 符号単位がサロゲートか否かを判定する。 7.1.2 サロゲート・ペア⇔Unicodeスカラ値変換 7.1.3 UTF-16文字列関数 7.2 […]
6.2 アドレス (値) のアラインメントを返す。
次の関数テンプレートは、ポインタの境界調整を求めるためのものです。厳密にいえば、ポインタを汎整数型に型変換した場合、それを元の型に再変換して値が変わらないこと以外、すべて処理系定義になるわけですが、実際にはポインタの値= […]
6.1 データを逆順にする。
C++では、配列のほか、std::vectorやstd::listのような列コンテナの並びを逆にするための標準関数が用意されています。<algorithm>で宣言・定義されているstd::reverse関数と […]
5.3 アラインメント調整のため、オフセットを切り上げる。
実用上は元ネタのマクロで十分なのですが、この企画はあくまでも「C++関数・テンプレート集」ですので、ちょっと強引ながらもメタ関数と関数を作ってみることにします。 まずはメタ関数からです。 [crayon-673ef515 […]