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

时间:2020-03-06 14:59:42  来源:igfitidea点击:

这似乎是一个垒球问题,但是我总是很难查找该功能,因为关于char和tchar的引用似乎有很多变体。

解决方案

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

转换为char取决于它到底是哪一个。如果TCHAR实际上是一个字符,则可以进行简单的转换,但是如果它确实是wchar_t,则需要一个例程在字符集之间进行转换。参见函数MultiByteToWideChar()

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

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

UTF8与STL中的宽字符转换

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

  • CW2A
  • CA2W
  • 等等...

MSDN

Although in this particular situation I think the TChar is a wide character I'll only need to do the conversion if it isn't. which I gotta check somehow.
if (sizeof(TCHAR) != sizeof(wchar_t))
{  .... }

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

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

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

如果我们在Windows上采用旧代码,则代码中提到的简单使用定义为可选。