我想从 .dll 字符串表中读取 utf-8 测试。像这样的东西
LPWSTR nnW;
LoadStringW(hMod, id, nnW, MAX_PATH);
Run Code Online (Sandbox Code Playgroud)
之后,我想转换LPWSTR nnW到std::wstring nnWstring。我是这样试的:LPWSTR nnW; LoadStringW(hMod, id, nnW, MAX_PATH);
const int length = MultiByteToWideChar(CP_UTF8,
0, // no flags required
(LPCSTR)nnW,
-1, // automatically determine length
NULL,
0);
std::wstring nnWstring(length, L'\0');
if (!MultiByteToWideChar(CP_UTF8,
0,
(LPCSTR)nnW,
-1,
&nnWstring[0],
length))
MessageBoxW(NULL, (LPCWSTR)nnWstring.c_str(), L"wstring", MB_OK | MB_ICONERROR);
Run Code Online (Sandbox Code Playgroud)
之后在MessageBoxW 中只显示第一个字母。
无需转换或复制。
std::wstring nnWString(MAX_PATH, 0);
nnWString.resize(LoadStringW(hMod, id, &nnWString[0], nnWString.size());
Run Code Online (Sandbox Code Playgroud)
注意:您的原始代码会导致未定义的行为,因为它使用未初始化的指针进行写入。肯定不是你想要的。
这是另一个变体:
| 归档时间: |
|
| 查看次数: |
4824 次 |
| 最近记录: |