char*からwchar*に変換するには?

解決


背黒鶺鴒  2011-01-16 06:54:58  No: 72182

はじめまして。
DrawText();で、string型の変数を引数に使いたかったので変換しようと考え次のように書いたのですが、漢字の部分だけ?????で表示されてしまいます。
ウォッチを見てみると、cのところまでは、漢字が漢字のまま格納されて
いるのですが、wcのところになると文字化けを起こしてしまいます。
どうすればいいのでしょうか?

scene[i] = "aaaaaa漢字";

screen[i] = scene[i];

DrawText(hdc,string_to_widechar(screen[i]),-1,&(position.getstringrt()),DT_WORDBREAK);  

wchar_t* string_to_widechar(std::string chstring){
    setlocale( LC_ALL, "ja" );

    const char*   c = chstring.c_str();
    size_t     length = strlen( c );
    wchar_t*   wc = new wchar_t[ length+1 ];
    length = mbstowcs( wc, c, length+1 ); 
    if( length == -1 ) return NULL;
    return wc;
  }


ryo  2011-01-16 08:39:19  No: 72183

http://msdn.microsoft.com/ja-jp/library/39cwe7zf(v=VS.100).aspx
より
>日本語  "japanese" または "jpn" 

setlocateの第2引数をこれにしてみてください


ryo  2011-01-16 08:40:21  No: 72184

>setlocateの第2引数をこれにしてみてください
setlocale 
スペル間違えた>_<  インテリセンスに頼りすぎだわ


επιστημη  URL  2011-01-16 18:02:31  No: 72185

ついでに:

> if( length == -1 ) return NULL;

if ( length == -1 ) {
  delete[] wc;
  wc = 0;
}


背黒鶺鴒  2011-01-20 07:59:46  No: 72186

解決しました。ryoさん、επιστημηさんありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加