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

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

本文关键字:转换 tchar 是什么 方法 最简单 char C++ ms      更新时间:2023-10-16

这似乎是一个很软的问题,但我总是很难找到这个函数,因为在引用char和tchar方面似乎有很多变化。

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

  • CW2A
  • CA2W
  • 等等

MSDN

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

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

MultiByteToWideChar,但也请参阅"MultiByteToWideChar的一些gotchas"。

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

STL 中的UTF8到宽字符的转换

尽管在这种特殊的情况下,我认为TChar是一个宽字符,但如果不是,我只需要进行转换。我得检查一下。

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

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

内的所有内容

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

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

如果您在Windows中采用了旧代码,则代码中提到的简单使用定义是可选的。

您可以在代码中放入条件

ifdef_UNICODE

{//喜欢TCHAR就是宽CHAR}否则{//就像TCHAR是CHAR}

我意识到这是一个旧线程,但它没有得到"正确"的答案,所以现在添加它。

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