VC++: how-to convert CString to TCHAR*
VC ++:如何将CString值转换为TCHAR *。一种方法是GetBuffer(..)函数。 还有什么其他方法可以将CString转换为TCHAR *。
要复制
1 2 | TCHAR* buf = _tcsdup(str); free(buf); |
要么
1 2 3 | TCHAR* buf = new TCHAR[str.GetLength() + 1]; _tcscpy_s(buf, str.GetLength() + 1, str); delete[]buf; |
但是,上面的代码通常没有用。您可能想要像这样修改它:
1 2 | TCHAR buf[300]; _tcscpy_s(buf, TEXT("text")); |
通常,您需要这样做才能将数据读入缓冲区,因此您要使缓冲区大小大于当前大小。
或者,您可以只使用
1 2 3 4 | GetWindowText(hwnd, str.GetBuffer(300), 300); str.ReleaseBuffer(); //release immediately TRACE(TEXT("%s\ "), str); |
在其他情况下,您只需要const cast
最后,
这取决于为什么需要非常量
手动更新CString对象的内容:
在这种情况下,您将必须调用CSimpleStringT :: GetBuffer(指定最终字符串的最小长度),更新内容,然后调用CSimpleStringT ::: ReleaseBuffer。强制调用
无法在接口上公开const正确性:
如果是这种情况,您可以更新接口以使用
如果无法更新接口,则最好将其复制到
如果可以确保该实现永远不会修改通过