我有原始数据:47 00 61 00 6D 00 65 00 41 00 73 00 73 00 65 00 74 00
= G.a.m.a.s.s.e.t.并将其存储在vector<char>
数组中的位置15。
现在我想将其复制到wstring值,但是我收到'3221225477'错误代码。
这是我编写的代码:
wstring string_Data;
std::memcpy(&string_Data, &file_buffer.data()[15], 18);
它正在处理我的所有其他值,只是wstring不起作用。
如果我使用wcout << string_Data << endl;
,它不会崩溃,但会打印3个值? ,它在控制台中显示GameAsset???
。
如果我使用wcout << string_Data.c_str() << endl;
,它将崩溃。
我做错了什么?使用memcpy ???
的正确方法是什么wstring string_Data;
string_Data.resize(9);
std::memcpy(string_Data.data(), file_buffer.data()+15, 18);
或者,您可以改用std::wstring
构造函数:
wstring string_Data(reinterpret_cast<wchar_t*>(file_buffer.data()+15), 9);
不管哪种方式,只要注意wchar_t
都不是可移植的。仅在使用UTF-16处理wchar_t
的Windows上为16位。如果您需要此代码在其他平台上使用wchar_t
使用UTF-32处理的平台,则应使用vector
解释char16_t
数据并将其复制到std::u16string
或将其转换为[ C0]使用std::wstring
或您选择的任何Unicode库(ICU等)。