使用memcpy将矢量数据复制到wstring的正确方法

问题描述 投票:0回答:1

我有原始数据: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 ???

的正确方法是什么
c++ memcpy wstring
1个回答
2
投票
尝试以下方法:

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等)。

© www.soinside.com 2019 - 2024. All rights reserved.