在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上采用旧代码,则代码中提到的简单使用定义为可选。