我有以下方法:
VariantFromString(strXMLPath ,vXMLSource);
该方法的签名为:
HRESULT VariantFromString(PCWSTR wszValue, VARIANT &Variant);
现在,当我通过CString时,如下所示:
char cCurrentPath[FILENAME_MAX];
if (!GetCurrentDir(cCurrentPath, sizeof(cCurrentPath)))
{
return errno;
}
CString strXMLPath = cCurrentPath;
strXMLPath += XMLFILE;
VariantFromString(strXMLPath ,vXMLSource);
我收到错误消息:无法从CString转换为PCWSTR
最佳答案
您确实应该使用Unicode(wchar_t
而不是char
)。这就是操作系统内部运行的方式,并且可以避免像这样不断在字符类型之间进行转换。
但是在这种情况下,您可以使用CString::AllocSysString
将其转换为与BSTR
兼容的PCWSTR
。只要确保使用SysFreeString
将其释放即可。
[编辑]
例如,您可以将功能更改为:
VARIANT VariantFromString(const CString& str)
{
VARIANT ret;
ret.vt = VT_BSTR;
ret.bstrVal = str.AllocSysString();
return ret;
}
关于c++ - 如何从CString转换为PCWSTR,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4312175/