|
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
void dump(const char *s, const wchar_t *p, int n)
{
int i;
printf("%s =", s);
for (i = 0; i < n; i++) printf(" %x", p[i]);
printf("\n");
}
int main()
{
char a[8] = "あいう";
wchar_t w[8] = { 0 };
wchar_t t[8] = L"あいう";
setlocale(LC_ALL, "");
mbstowcs(w, a, 8);
dump("w", w, 8);
dump("t", t, 8);
printf("w = %ls\n", w);
printf("t = %ls\n", t);
return 0;
}
このプログラムを試してみれば分かりますが、コンパイラが、
L"あいう" を正しく処理できていないようです。
たぶん、コンパイラが setlocale を実行していないのでしょう。
ライブラリはちゃんとしているようで、コンパイルされたプログラムが、
実行時に mbstowcs で、マルチバイト文字 "あいう" をワイド文字に変換する
のは問題なく出来るようです。
|