【发布时间】:2018-06-28 14:10:01
【问题描述】:
我有一个函数,它接受一个名为 arrayOfStrings 的参数,定义如下:
const TCHAR* arrayOfStrings[] = { L"Test" };
现在我想将字符串转换为上述类型,但我不知道如何。 This link 提供了将字符串转换为 tchar 的解决方案,但不是 const tchar*。 This other link 展示了如何将字符串转换为 tchar*,而不是 const tchar*,并且内存分配对我来说是第二个解决方案的问题。您可能会说,我对 c++ 很陌生,所以任何教育提示也将不胜感激。
【问题讨论】:
-
很可能是
TCHAR而不是tchar。由于您使用宽字符数组(L前缀)对其进行初始化,因此您只能使用std::wstring,因为TCHAR可能是wchar_t的typedef。 -
谢谢。你是对的,它是 TCHAR。已编辑。
-
有没有办法将 std::wstring 转换为 const TCHAR*?
-
@NavidNazari 如果
TCHAR真的是wchar_t的typedef,您可以简单地使用mywstring.c_str()来获取底层const wchar_t*数组。同样的事情可以把std::string转换成const char *,但是你必须知道TCHAR是哪个类型(char或者wchar_t)。 -
strong 建议不要在新代码中使用
TCHAR,而是决定使用wchar_t并使您的项目“使用 Unicode 字符集”。自 1990 年代以来,TCHAR可在 char/wchar_t 之间切换的双重性一直没有用处。
标签: c++ string type-conversion