将wstring转换为WS_STRING的最佳方法是什么?
尝试使用宏:
wstring d=L"ddd";
WS_STRING url = WS_STRING_VALUE(d.c_str()) ;
有错误:
cannot convert from 'const wchar_t *' to 'WCHAR *'
答案 0 :(得分:1)
简答:
WS_STRING url = {};
url.length = d.length();
WsAlloc(heap, sizeof(WCHAR) * url.length, (void**)&url.chars, error);
memcpy(url.chars, d.c_str(), sizeof(WCHAR) * url.length); // Don't want a null terminator
答案很长:
请勿在{{1}}以外的任何地方使用WS_STRING_VALUE
。你可以使用WCHAR[]
进行编译,但是你会遇到两个问题:
const_cast<>
而不是查找空终止,WS_STRING
将有一个不正确的length
成员。RTL_NUMBER_OF
只会引用WS_STRING
- 它不会复制。如果它是局部变量,这显然是有问题的。相关代码片段:
d