将表单 CString 转换为 const char*

Converting form CString to const char*

我写了一个方法将形式 CString 转换为 const char *:

const char* CAESDlg::ConvertToChar(CString str) {
    CStringA charstr(str);
    const char *cstr = (const char *)charstr;
    return cstr;
}

但是当试图将其放入 const char * 时,它 return 不是正确的值!

const char *test = ConvertToChar(filePath);

在不知道 CStringCStringA 的情况下,我只能猜测,但似乎您一访问指针的值就返回一个指向局部变量(即 UB)的指针指向.

如果您想使用 CString 对象作为 const char* 参数,您可能想使用 LPCTSTR 而不是您自己编写的 ConvertToChar 函数。

charstr 的值在调用者将其分配给变量之前在函数末尾被销毁。

您不需要函数,调用者可以直接使用 CStringA 并注意 testsFilePathA 超出范围之前有效。

CStringA sFilePathA(filePath);
const char *test = sFilePathA;