これはシナリオです:
char*
文字列のデータ型のみを使用できます。wchar_t *
- 私の MS Visual C++ コンパイラは、UNICODE ではなく MBCS に設定する必要があります。これは、私が持っているサード パーティのソース コードが MBCS を使用しているためです。UNICODE に設定すると、データ型の問題が発生します。
- 正しく印刷できるように文字列を取得する必要があるプリンターで漢字を印刷しようとしています
コードを正しくするには、この行をどうすればよいですか。char * str = "你好";
おそらく16進シーケンスに変換しますか?はいの場合、どのように?どうもありがとう。
char * str = "你好";
size_t len = strlen(str) + 1;
wchar_t * wstr = new wchar_t[len];
size_t convertedSize = 0;
mbstowcs_s(&convertedSize, wstr, len, str, _TRUNCATE);
cout << convertedSize;
if(! ExtTextOutW(resource->dc, 1,1 , ETO_OPAQUE, NULL, wstr , convertedSize, NULL))
{
return 0;
}
更新:質問を別の方法で言いましょう
私はこれを持っています.char * strにはUTF-8コードユニットのシーケンスが含まれています.2つの漢字你好の場合、ExtTextOutWはまだwstrを正しく実行できません. 理由はありますか?
char * str = "\xE4\xBD\xA0\xE5\xA5\xBD";
size_t len = strlen(str) + 1;
wchar_t * wstr = new wchar_t[len];
size_t convertedSize = 0;
mbstowcs_s(&convertedSize, wstr, len, str, _TRUNCATE);
if(! ExtTextOutW(resource->dc, 1,1 , ETO_OPAQUE, NULL, wstr , len, NULL))
{
return 0;
}