【C++】不用任何函数的简单 wstring to LPWSTR

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” 两个;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值