繁体   English   中英

在C / C ++(ms)中将char []转换为/从tchar []的最简单方法是什么?

[英]What is the simplest way to convert char[] to/from tchar[] in C/C++(ms)?

这似乎是一个非常柔软的问题,但我总是很难查找这个函数,因为似乎有很多关于char和tchar的引用的变化。

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

  • CW2A
  • CA2W
  • 等等...

MSDN

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

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

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

UTF8到/来自STL中的宽字符转换

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

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

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

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

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

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

你可以在你的代码中加入条件

ifdef _UNICODE

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

我意识到这是一个老线程,但它并没有让我得到“正确”的答案,所以我现在就加入它。

现在看来这样做的方法是使用TEXT宏。 msdn的FindFirstFile示例指出了这一点。 http://msdn.microsoft.com/en-us/library/windows/desktop/aa364418%28v=vs.85%29.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM