:: reverse dictionary ::
※ソースファイルについて
ワイド文字列をマルチバイト文字列に変換するには、wcstombs 関数を使います。
#include <locale.h> #include <stdio.h> #include <stdlib.h>
wchar_t wcs[] = L"Cプログラム"; char mbs[32]; int len; setlocale(LC_ALL, "ja"); /* ロケールを日本語に設定 */ len = wcstombs(mbs, wcs, 32); if (len == -1) { wprintf(L"変換に失敗しました。 [%s]\n", wcs); return EXIT_FAILURE; }
mbs は "Cプログラム" になります。
size_t wcstombs(char *mbs, const wchar_t *wcs, size_t sz)
ワイド文字列 wcs の sz バイト分をマルチバイト文字列に変換します。
変換したマルチバイト文字列は、mbs に格納されます。
変換に成功した場合は変換したバイト数、失敗した場合は -1 を返します。
mbs に NULL を指定した場合は、変換後のバイト数を返します。
wchar_t wcs[] = L"Cプログラム"; int len; setlocale(LC_ALL, "ja"); /* ロケールを日本語に設定 */ len = wcstombs(NULL, wcs, 0);
len は 11 になります。
なお、「戻り値 = sz」になる場合、マルチバイト文字列の終わりに NULL文字は付きません。 NULL文字を付けたい場合は、sz に変換後のバイト数を超える値を指定します。
len = wcstombs(NULL, wcs, 0); len = wcstombs(mbs, wcs, len + 1);
mbs … マルチバイト文字列を格納する文字列バッファ
wcs … ワイド文字列
sz … 変換するバイト数
・変換に成功した場合 … 変換したバイト数
・変換に失敗した場合 … -1
・ mbs に NULL を指定した場合 … 変換後のバイト数
Copyright (C) 2005-2007 Noto Watabe. All rights reserved.
e-mail:wmh@always-pg.com