UTF-16のサロゲートとUnicodeスカラ値(UTF-32)の相互変換を行います。今回も前回と同様、C++11以降かつint型が32ビットの処理系を仮定しています。

定数定義は前回のものを引き継ぎますが、以下のものを追加する必要があります。

これを踏まえて実際の関数を定義していくことにします。

サロゲート・ペアを解読 (Unicodeスカラ値に変換) する。

Unicodeスカラ値(1~16面)を上位サロゲートに変換する。

Unicodeスカラ値(1~16面)を下位サロゲートに変換する。


元ネタ

↑ 7. 文字・文字列・文字コードに関する関数・テンプレート