这似乎是一个漂亮的垒球的问题,但我总是有一个很难看的这一功能,因为那里似乎有这么多的变化有关引用的炭和tchar.

有帮助吗?

其他提示

最简单的方法是使用转换的宏:

  • CW2A
  • CA2W
  • 等等...

MSDN

TCHAR是char或wchar_t(宽字符)的特定于Microsoft的typedef。

转换为char取决于它实际上是哪一个。如果TCHAR实际上是一个char,那么你可以做一个简单的转换,但如果它真的是一个wchar_t,你需要一个例程来在字符集之间进行转换。请参阅MultiByteToWideChar()函数

这篇文章也有一些答案,特别是如果你正在寻找一个跨平台的解决方案:

在STL中使用UTF8进行广角字符转换

  
    

虽然在这种特殊情况下,我认为TChar是一个广泛的角色,如果不是,我只需要进行转换。我得以某种方式检查。

  
if (sizeof(TCHAR) != sizeof(wchar_t))
{  .... }

关于这一点很酷的是,equals的两个大小都是常量,这意味着编译器将处理(并删除)if(),如果它们相等,则删除大括号内的所有内容

以下是将_TCHAR * argv []复制到char * argn []的CPP代码。

http://www.wincli.com/?p=72

如果您将旧代码应用于Windows,请简单使用代码中提到的define作为可选代码。

您可以在条件中添加条件

ifdef _UNICODE

{//做像TCHAR一样宽大的问候}以及{//做像TCHAR是CHAR}

我意识到这是一个旧线程,但它并没有让我得到“正确”的说法。回答,现在就加入吧。

现在看来这样做的方法是使用TEXT宏。 msdn的FindFirstFile示例指出了这一点。 http://msdn.microsoft的.com / EN-US /库/窗/桌面/ aa364418%28V = vs.85%29.aspx

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top