C++でワイド文字

ワイド文字を扱うための道具

ワイド文字<-->マルチバイト文字変換のための関数・API

  • C標準
    • stdlib.h
      • mbtowc()
      • wctomb()
      • mbstowcs()
      • wcstombs()
    • wchar.h
      • mbrtowc()
      • wcrtomb()
      • mbsrtowcs()
      • wcsrtombs()
  • Windows API
    • MultiByteToWideChar()
    • WideCharToMultiByte()

例によって、(wchar.hで定義されている)rのついた関数がスレッドセーフティである。関数名の最後に_rがくっついてるのが代替関数です。

関数だけ見るとできそうな感じはする。しかし、wchar_tは処理系・実装依存なので移植を考えたコードを書くのは難しい。

  • MSVC
    • サイズは16bit、文字コードUTF-16として扱っている。VC6以前はunsigned shortのtypedef。VC7以降はwchar_tを組み込み型として扱える。
  • gcc
    • サイズは32bit、文字コードUTF-32として扱っている。typedefとかの情報はgcc持ってないので知らない(ぉ。