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