如何创建LPOLESTR类型的变量或常量?

D_B*_*ter 2 c++

我需要LPOLESTR(长指针OLE字符串)作为简单函数调用的参数.

根据C++字符串完整指南,第二部分 - 字符串包装类

OLECHAR是一个Unicode字符(wchar_t)

LPOLESTR是一串OLECHAR(OLECHAR*)

所以我应该能够做到这一点:

int demo(LPOLESTR ptName) {
    return 1;
}

int main(){

    demo(L"Visible");
}
Run Code Online (Sandbox Code Playgroud)

但我收到编译错误:

(const wchar_t [8])L"可见"

"const wchar_t*"类型的参数与"LPOLESTR"类型的参数不兼容

或者我可能会尝试一个变量:

LPOLESTR lVis = L"Visible";
Run Code Online (Sandbox Code Playgroud)

但我得到这个编译器错误:

(const wchar_t [8])L"可见"

"const wchar_t*"类型的值不能用于初始化"LPOLESTR"类型的实体

#include <string>在顶部.

这似乎应该是一件简单的事情,但我整个上午一直在谷歌搜索,无法找到答案.如何在C++中创建LPOLESTR类型的变量或常量?

Bat*_*eba 5

你的问题是,LPOLESTRtypedefwchar_t*.

编译器不允许您在没有显式const wchar_t*wchar_t* 情况下将a转换为a const_cast.

写作,使用替代类型LPCOLESTR:

LPCOLESTR lVis = L"Visible";
Run Code Online (Sandbox Code Playgroud)

将修复即时编译错误,就像Windows程序员更喜欢Windows和可能更喜欢的.

const_cast通常,使用a 是不可取的,但如果函数文档指出它不会尝试修改传递给它的数据,那么你将使用它.