-2

通常、CHAR または CHAR* を TCHAR または TCHAR* に変換する必要があります。

CHAR chDecimal = 'A';
TCHAR Decimal = '\0';
int written = MultiByteToWideChar(CP_ACP, 0, &chDecimal, 1, &Decimal, 1);  
std::wcout << Decimal << endl;
getchar();

ATL や他の Microsoft ライブラリを使用せずにそれを行うためのより良い、最速の方法はありますか? ありがとうございました。

4

1 に答える 1

3

質問で提示されたコード、

CHAR chDecimal = 'A';
TCHAR Decimal = '\0';
int written = MultiByteToWideChar(CP_ACP, 0, &chDecimal, 1, &Decimal, 1);

主張されているように、(定義さTCHARれているかどうかによって異なります)に変換されません。UNICODE代わりに、無条件に に変換されwchar_tます。また、TWindows 9x をサポートし、2000 年に Layer for Unicode が導入されて廃止された Microsoft のものを使用することは、非レガシー コードにとって非常に疑わしい方法です。

とにかく、単一のエンコーディングポイントを変換することは、非常に疑わしい方法です。日本語のコードページや UTF-8 など、1 文字あたり 1 バイトを超えるエンコード方式では失敗します。

目的が ASCII 文字のみを変換することである場合は、C++ コピー代入演算子または初期化のいずれかを使用して、それをコピーするだけです。=それよりも簡単にすることはできません。

于 2015-03-01T12:06:57.557 に答える