C++ - 分配一个unsigned char缓冲区,然后用字符串填充它

Bre*_*ett 2 c++ arrays unsigned-char

我真的很新,C++所以如果这是一个天真的问题,请原谅我 - 但我一直在寻找答案.

我正在尝试使用以下代码创建一个unsigned char大小的数组1024:

unsigned char *r_record = new unsigned char[1024]();
Run Code Online (Sandbox Code Playgroud)

现在我有一个std::string变量:

std::string hw = "Hello Word";
Run Code Online (Sandbox Code Playgroud)

我想从字节开始填充r_recordwith hw(即'Hello World')10'th.

我怎样才能把hwr_record

所以实际上,我的r_record数据看起来像(.s为空的):

[.........Hello World......and so on]
Run Code Online (Sandbox Code Playgroud)

jua*_*nza 8

你可以std::copyalgorithm标题中使用:

std::copy(hw.begin(), hw.end(), r_record + 10);
Run Code Online (Sandbox Code Playgroud)

如果你想使用向量而不是动态分配的数组(一个好主意),那么

std::vector<unsigned char> r_record(1024); // 1024 zero initialized elements
std::copy(hw.begin(), hw.end(), r_record.begin() + 10);
Run Code Online (Sandbox Code Playgroud)

  • 只是一个简单的说明:复制人物(这似乎是他要问的); 大多数二进制格式(这可能是为什么`unsigned char`的缓冲区)也需要一些确定长度的方法.(当然,他应该使用`std :: vector <unsigned char>`,而不是`new unsigned char []`.) (2认同)