マルチバイト文字からワイド文字への変換

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ホヅミ
記事: 110
登録日時: 9年前

マルチバイト文字からワイド文字への変換

#1

投稿記事 by ホヅミ » 9年前

現在私はDirectX10を用いて、マルチバイト文字からワイド文字への変換し画面に表示するというものをやっています。
SDKのEmptyProject10をいじくりながら作っているのですが、いざ表示させると文字化けしてしまいます

コード:

ID3DX10Font*                g_pFont = NULL;         // Font for drawing text
ID3DX10Sprite*              g_pSprite = NULL;       // Sprite for batching text drawing
CDXUTTextHelper*            g_pTxtHelper = NULL;
voidRenderText()
{
	char *mc = "Test";
	wchar_t wc;
	int len;

	setlocale( LC_CTYPE, "jpn" );

	len = mbtowc( &wc, mc, MB_CUR_MAX );

	g_pTxtHelper->Begin();
	/*省略*/
	g_pTxtHelper->SetInsertionPos( 0, 160 );
	g_pTxtHelper->SetForegroundColor( D3DXCOLOR( 1.0f, 0.0f, 0.0f, 1.0f ) );
	//Testと表示
	g_pTxtHelper->DrawTextLine( &wc );
	
	g_pTxtHelper->End();
}
実行画面
DxTest.png
文字化け画面
DxTest.png (45.6 KiB) 閲覧数: 396 回
何が原因でこの文字化けが起きているのかがまったくわからない状態です
もしわかる方がいれば助言をお願いします

OS:WIN 7
コンパイラ:Visualstudio2010
SDK:DirectXSDK June 2010

アバター
lriki
記事: 88
登録日時: 9年前

Re: マルチバイト文字からワイド文字への変換

#2

投稿記事 by lriki » 9年前

mbtowc は「文字列」の変換ではなくて「文字」の変換みたいです。

あと、wchar_t wc は wchar_t wc[32] のように配列にしておく必要があると思います。

ホヅミ
記事: 110
登録日時: 9年前

Re: マルチバイト文字からワイド文字への変換

#3

投稿記事 by ホヅミ » 9年前

>>mbtowc は「文字列」の変換ではなくて「文字」の変換みたいです。
なるほどそうだったのですね。
ためしに "WCHAR char 文字列" で検索をかけたところ
mbstowcs_sが出てきました
使ってみたところうまくいきました

>>あと、wchar_t wc は wchar_t wc[32] のように配列にしておく必要があると思います。
mbtowcは文字の変換だったため配列になってなかったのですね

とても参考になりました
ありがとうございます!

閉鎖

“C言語何でも質問掲示板” へ戻る