将CHAR转换为TCHAR的最快捷、最优雅的方式

Fastest and elegant way to transform a CHAR to a TCHAR

本文关键字:方式 TCHAR CHAR 转换      更新时间:2023-10-16

我通常需要将CHAR或CHAR*转换为TCHAR或TCHAR*

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

在不使用ATL或其他Microsoft库的情况下,有更好、最快的方法吗?非常感谢。

问题中的代码

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

不转换为TCHAR(这取决于是否定义了UNICODE)。相反,它无条件地转换为CCD_ 3。此外,对于非遗留代码来说,使用Microsoft T是一种非常可疑的做法,它支持Windows 9x,在2000年引入Layer for Unicode时就已经过时了。

无论如何,转换单个编码点是一种非常可疑的做法。对于每个字符超过一个字节的任何编码方案,如日语代码页或UTF-8,它都会失败。

如果只转换ASCII字符,则只需使用C++复制赋值运算符=或初始化来复制。再简单不过了。