将表单CString转换为const char *

时间:2015-04-25 09:17:11

标签: c++ const c-strings

我写了一个方法,将表单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);

2 个答案:

答案 0 :(得分:1)

在不知道CStringACString的情况下我只能猜测,但是当你访问指针指向的值时,好像你正在返回指向局部变量(UB)的指针

如果您想将const char*对象用作ConvertToChar参数,则可能需要使用LPCTSTR而不是自编UICatalog函数。

答案 1 :(得分:1)

charstr的值在函数结束时被销毁,然后调用者将其赋值给变量。

您不需要某个功能,来电者可以直接使用CStringA并注意testsFilePathA超出范围之前有效。

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