我通常需要将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库,是否有更好,更快的方法?谢谢。
答案 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 ++复制赋值运算符=
或初始化将其复制。不能比这简单。