“初始化”:无法从“const wchar_t[35]”转换为“LPWSTR”

Con*_*con 3 c++ lpwstr

我目前正在学习 C++,想要更改我的桌面壁纸。但是我收到上面这个错误。

#include <string>
#include <iostream>
#include <Windows.h>

using namespace std; 

int main() {

LPWSTR test = L"C:\\Users\\user\\Pictures\\minion.png";

int result = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, 
test, SPIF_UPDATEINIFILE);


}
Run Code Online (Sandbox Code Playgroud)

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

有任何想法吗?

谢谢

Rem*_*eau 10

LPWSTR是 的别名wchar_t*,即指向非常量字符的指针。

字符串文字是一个常量字符数组,在您的例子中是一个const wchar_t[35]. 它衰减为指向 const 字符的指针,指向文字中的第一个字符。

不能将指向 const 的指针分配给指向非 const 的指针。这将允许对只读存储器进行写访问。

LPCWSTR改用它,它是 的别名const wchar_t*

LPCWSTR test = L"C:\\Users\\user\\Pictures\\minion.png"; 
Run Code Online (Sandbox Code Playgroud)