2012年6月23日土曜日

intからワイド文字列(wchar_t)への変換

C++の標準ライブラリを使うやり方は、整数、少数等の型の種類にとらわれずに簡単です。

ここではCっぽいやり方のうちの一つを書いておきます。

まず
#include < stdlib.h >あるいは
#include < wchar.h >
とインクルードを済ませて(多分 < windws.h >でインクルードしてます。)
↓こんな感じにします。
int number = 100;//変換したい数字
wchar_t wStr[12];//変換後の文字列
_itow_s(number, wStr, 10);//変換用関数
//使用例(デバッグ窓に出力)
OutputDebugString(wStr);

変換の主役は
errno_t _itow_s(
  int value, //変換したいint
  wchar_t *buffer, //変換後の文字列を格納するポインタ
  int radix //何進数か?
);
という関数です。名前の意味はint to wchar_t(int型からwchar_t型へ)です。末尾の_sは昔あった文字列の範囲をチェックしない関数 _itow と置き換えるために新しく使った関数だという事を意味しています。

最後の引数radixは進数の基数です。例えばソースコード上のリテラルで10進数を入れたとしても、ここを16にすれば16進数表記に直した上での文字列が代入されます。

符号付きintの範囲は-2,147,483,648~2,147,483,647なのでマイナスの場合は11文字+終端文字=12の配列が必要になる可能性があります。ここではwcharという、charの倍のメモリが必要な分けですが、確保する配列の単位もwcharだから元々2倍なので普通に必要文字数+1の配列を確保すれば良い事になります。

その他、MSのデータ変換のページ

0 件のコメント: