在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()
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
- 如何在虚幻引擎4中将char*转换为TCHAR?
- 用于从 ANSI 字符串转换为 std::basic_string <TCHAR>的正确函数声明
- 删除unicode def后,无法将QString转换为TCHAR
- 如何将TCHAR转换为常量字符
- 将 std::string 转换为 const tchar*
- 将 std::string 转换为具有特殊字符的 FString (TCHAR / wstring)
- 正确的交叉平台从 std::string 转换为 'const TCHAR *'
- 从字符转换为 TCHAR 中获得奇怪的字符
- 使用 TCHAR 的错误,无法转换为wchar_t
- 无法将'TCHAR*'转换为'const char*'
- 将CHAR转换为TCHAR的最快捷、最优雅的方式
- 安全C++ std::字符串到 TCHAR * 转换
- TCHAR[]转换为字符串
- 如何在VC++中将TChar[]数组转换为std::string.语法帮助
- 如何将wchar_t*转换为TCHAR[](而不是TCHAR*)
- 如何将TCHAR转换为visualc++
- 从CString到char*/TCHAR*的转换
- visual c++中支持unicode char的从TCHAR到char*的转换
- 如何将TCHAR数组转换为std::string
- 在C/C++(ms)中,将char[]转换为tchar[]的最简单方法是什么