[英]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.