【发布时间】:2020-01-12 00:40:34
【问题描述】:
我有一个原始数据:
47 00 61 00 6D 00 65 00 41 00 73 00 73 00 65 00 74 00 = G.a.m.e.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 of ? , 在控制台显示GameAsset???。
如果我使用wcout << string_Data.c_str() << endl;,它会崩溃。
我做错了什么?使用 memcpy 的正确方法是什么???
【问题讨论】:
-
为什么必须将数据复制到 wstring 中才能使用?如果你需要字符串形式的字符串,那为什么首先要放在向量中呢?
-
@MichaelKenzel 好问题!这是因为我使用自己的序列化和反序列化器制作了一个自定义二进制文件,我使用 zlib 解压缩为 chars 向量,然后将二进制数据读取为其值。