【发布时间】:2018-12-12 18:38:14
【问题描述】:
我需要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 类型的变量或常量?
【问题讨论】:
-
如果
LPOLESTR是wchar_t*,则不能为其分配const wchar_t*。如果您确定该函数不会更改constness,则可以通过强制转换来删除它。否则,为什么不使用不带 const 的wchar_t*或wchar_t[]? -
@KarstenKoop 好的,我该怎么做。对不起,我是菜鸟。
-
See also this question。似乎
LPOLESTR暗示了它的分配方式,类似于BSTR。 -
@KarstenKoop:
BSTR确实是一个非常不同的野兽,在实际字符串部分之前包含一个标题。 -
你在使用 MFC 或 ATL 之类的框架吗?然后应该有这个帮助类。
标签: c++