VC++:如何将CString转换为TCHAR*

abh*_*312 4 mfc visual-c++

VC++:如何将CString值转换为TCHAR*.One方法是GetBuffer(..)函数.有没有其他方法可以将CString转换为TCHAR*.

Bar*_*ani 5

CString::GetBuffer() 不进行任何转换,它可以直接访问字符串.

制作副本CString:

TCHAR* buf = _tcsdup(str);
free(buf);
Run Code Online (Sandbox Code Playgroud)

要么

TCHAR* buf = new TCHAR[str.GetLength() + 1];
_tcscpy_s(buf, str.GetLength() + 1, str);
delete[]buf;
Run Code Online (Sandbox Code Playgroud)

但是上面的代码通常没用.您可能希望像这样修改它:

TCHAR buf[300];
_tcscpy_s(buf, TEXT("text"));
Run Code Online (Sandbox Code Playgroud)

通常您需要将此数据读入缓冲区,因此您希望使缓冲区大小大于当前大小.

或者你可以CString::GetBuffer()再次使用,你可能想要使缓冲区大小更大.

GetWindowText(hwnd, str.GetBuffer(300), 300);
str.ReleaseBuffer(); //release immediately
TRACE(TEXT("%s\n"), str);
Run Code Online (Sandbox Code Playgroud)

在其他情况下,您只需要const cast const TCHAR* cstr = str;

最后,TCHAR不是很有用.如果您的代码兼容ANSI和unicode,那么您也可以只使用unicode.但这只是一个建议.