VC++:如何将 CString 值转换为 TCHAR*。一个方法是 GetBuffer(..) 函数。有没有其他方法可以将 CString 转换为 TCHAR*。
最佳答案
CString::GetBuffer()
不进行任何转换,它提供对字符串的直接访问。
要复制CString
:
TCHAR* buf = _tcsdup(str);
free(buf);
或
TCHAR* buf = new TCHAR[str.GetLength() + 1];
_tcscpy_s(buf, str.GetLength() + 1, str);
delete[]buf;
但是上面的代码通常没有用。您可能想像这样修改它:
TCHAR buf[300];
_tcscpy_s(buf, TEXT("text"));
通常您需要将数据读入缓冲区,因此您希望缓冲区大小大于当前大小。
或者您可以只使用CString::GetBuffer()
,您可能还想增大缓冲区大小。
GetWindowText(hwnd, str.GetBuffer(300), 300);
str.ReleaseBuffer(); //release immediately
TRACE(TEXT("%s\n"), str);
在其他情况下,您只需要 const cast const TCHAR* cstr = str;
最后,TCHAR
并不是很有用。如果您的代码与 ANSI 和 unicode 兼容,那么您不妨将其设为仅 unicode。但这只是一个建议。
关于visual-c++ - VC++ : how-to convert CString to TCHAR*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30429976/