繁体   English   中英

C ++-如何从String转换为TCHAR *?

[英]C++ - How do you convert from String to TCHAR*?

这是我的代码:

string str = "Hello!";
TCHAR* tch = new TCHAR[str.length() + 1];
mbstowcs_s(NULL, tch, _tcslen(tch), str.c_str(), str.length());
// Use tch for other stuff...
delete [] tch; // Gives debug heap corruption assertion

由于某种原因,我在此代码中得到了堆损坏断言。 我竭尽全力试图找出可能出问题的地方。 对于字符串和tchar之间的异同,我找不到任何好的文档,这可以帮助我自己解决这个问题。

_tcslen(tch)给出错误的结果,因为此时tch尚未初始化。 我假设您应该在那里传递str.length() + 1 (缓冲区的大小)。

您试图在初始化其内容之前在tch上使用_tcslen

从事物的外观上,您想要更接近的东西:

mbstwcs_s(NULL, tch, str.length(), str.c_str(), str.length());

如果您询问有关C ++的信息,请使用ATL字符串转换类代替手动的内存管理和WinApi调用:

string str = "Hello!";
CA2T tstr(str.c_str());

SomeFunctionT(tstr);

您也可以内联使用这些类:

string str = "Hello!";

SomeFunctionT(CA2T(str.c_str()));

注意:您需要包括atlbase.h。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM