将 CString 表单转换为常量字符*

Converting form CString to const char*

本文关键字:常量 字符 转换 CString 表单      更新时间:2023-10-16

我写了一个将表单CString转换为const char *的方法:

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

但是当尝试将其放入const char *时,它不会返回正确的值!

const char *test = ConvertToChar(filePath);

在调用方将其分配给变量之前,charstr的值在函数结束时被销毁。

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

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

不知道CStringCStringA我只能猜测,但似乎只要您访问指针指向的值,您就会返回指向局部变量(即 UB)的指针。

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