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

时间:2015-03-01 11:52:40

标签: c++ unicode tchar

我通常需要将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库,是否有更好,更快的方法?谢谢。

1 个答案:

答案 0 :(得分:3)

问题中提供的代码,

CHAR chDecimal = 'A';
TCHAR Decimal = '\0';
int written = MultiByteToWideChar(CP_ACP, 0, &chDecimal, 1, &Decimal, 1);
正如声明的那样,

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

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

如果目的是仅转换ASCII字符,那么只需使用C ++复制赋值运算符=或初始化将其复制。不能比这简单。