std::wstring wstr = L"Hello, World";
LPWSTR a = &wstr[0];
非常简单;string 类型同理;
解释一下:
大概是因为 LPWSTR本质上是指针,其次是一个以’\0’结尾的 wchar_t 数组;
而wstring/string在内存中其实也是以 ‘\0’ 结尾,这就确保了对齐;
联想一下普通的 char 数组中,可以用数组名作为数组首元素指针的特性,这里其实就是把wstring的首元素的地址赋值给 LPWSTR 变量,LPWSTR会从该地址开始,直到第一个出现在该内存区的 ‘\0’ 都视为一个整体;
所以如果只要你的 wstring/ string 中间不会出现 ‘\0’,那么啥事没有;
中间出现 ‘\0’ 实际上也是不可能的;
形如:
std::wstring a = L"He\0ll\0o";
会发现实际上 a 保存的值就只有 “He” 两个;