大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

C++でC風ライブラリを作る(UTF-16またはUTF-32からUTF-8への変換編)

著者:高木信尚
公開日:2019/04/14
最終更新日:2019/04/13
カテゴリー:技術情報

高木です。こんばんは。

伊関が入社して以来、このブログもにわかに活気づいた感があります。
ひとつひとつの記事のクオリティを上げるには限界があるので、とにかくアウトプットを増やせばそのうちのいくらかは世の中の人たちのお役に立てるものが出てくるだろうと考えています。
いろんな人が多くの投稿をしてくれるのはありがたいことです。

さて、最近の私は週1投稿のペースを守っています。
ところが、他のメンバーが頑張っているのであっという間に私の投稿は流れていってしまいます。
今回は前回に引き続き、UTF-16からUTF-8への変換、そしてUTF-32からUTF-8への変換もいっしょにやってしまおうと思います。

多重定義する両方のctrtomb関数に共通する部分をutf32_to_utf8関数に切り出し、それぞれから呼び出すようにしました。
また、mbstate_t型は前回まではstd::uint32_t型そのものでしたが、誤使用を避けるため構造体にしました。
さらに、不正なサロゲートペアに対するエラー処理を強化しました。

以下にコードを掲載します。

前回に引き続き、ほとんどコードを掲載するだけの手抜きな内容になってしまいましたね。
次回は引数にmbstate_t*を取らないcttomb関数に再度取り組みことにします。

    前の記事 :
    上に戻る