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

时间:2018-07-04 10:36:55

标签: c++

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

根据The Complete Guide to C++ Strings, Part II - String Wrapper Classes

  

OLECHAR是Unicode字符(wchar_t)

     

LPOLESTR是OLECHAR(OLECHAR *)的字符串

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

int demo(LPOLESTR ptName) {
    return 1;
}

int main(){

    demo(L"Visible");
}

但是我遇到了编译错误:

  

(const wchar_t [8])L“可见”

     

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

或者也许我会尝试一个变量:

LPOLESTR lVis = L"Visible";

但是我收到此编译器错误:

  

(const wchar_t [8])L“可见”

     

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

我的顶部是#include <string>

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

1 个答案:

答案 0 :(得分:5)

您遇到的问题是LPOLESTRtypedef的{​​{1}}。

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

使用替代类型const_cast进行书写:

LPCOLESTR

可以解决立即编译错误,就像Windows程序员更喜欢Windows一样。

通常不建议使用LPCOLESTR lVis = L"Visible"; ,但是如果功能文档指出它不尝试修改传递给它的数据,您将不使用它。