【发布时间】:2015-03-01 11:52:40
【问题描述】:
我通常需要将 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 库的情况下,有没有更好、最快的方法?谢谢。
【问题讨论】:
-
您是否尝试过更快地写一些东西?你测量了吗?
-
对于这种情况,
Decimal = chDecimal;会做你想做的事。当然,如果char chDecimal[] = "\xc2\xb0";会出现问题 - 但是你的代码也不会工作。 -
为什么你认为你需要转换,基于
wchar_t的流也可以处理char?这也是上述代码正确的原因,因为它将基于TCHAR的字符串写入std::wcout,但我想知道那不应该是基于wchar_t的字符串吗?另一个建议:如果可能,避免使用TCHAR。此外,如果它是使用不仅仅是基本 ASCII 的文本,请避免使用纯CHAR,而是使用wchar_t或WCHAR。 -
你的意思是因为固定长度为 1?