这似乎是一个漂亮的垒球问题,但我总是很难查找这个函数,因为关于 char 和 tchar 的引用似乎有很多变化。
8 回答
TCHAR 是 char 或 wchar_t(宽字符)的 Microsoft 特定类型定义。
转换为 char 取决于它实际上是其中的哪一个。如果 TCHAR 实际上是一个字符,那么你可以做一个简单的转换,但如果它真的是一个 wchar_t,你需要一个例程来在字符集之间进行转换。查看函数 MultiByteToWideChar()
这篇文章中也有一些答案,特别是如果您正在寻找跨平台解决方案:
虽然在这种特殊情况下,我认为 TChar 是一个宽字符,但如果不是,我只需要进行转换。我必须以某种方式检查。
if (sizeof(TCHAR) != sizeof(wchar_t))
{ .... }
很酷的一点是equals的大小都是常量,这意味着编译器将处理(并删除)if(),如果它们相等,则删除大括号内的所有内容
这是将 _TCHAR * argv[] 复制到 char * argn[] 的 CPP 代码。
如果您在 Windows 上采用旧代码,只需使用代码中提到的定义作为可选。
您可以在代码中添加条件
ifdef _UNICODE
{ //DO LIKE TCHAR IS WIDE CHAR } ELSE { //DO LIKE TCHAR IS CHAR }
我意识到这是一个旧线程,但它没有让我得到“正确”的答案,所以现在添加它。
现在看来这样做的方法是使用 TEXT 宏。msdn 上的 FindFirstFile 示例指出了这一点。 http://msdn.microsoft.com/en-us/library/windows/desktop/aa364418%28v=vs.85%29.aspx