Brett
Brett

Reputation: 12007

C++ - Allocate an unsigned char buffer and then fill it with a string

I am realively new to C++ so please forgive me if this is a naive question - but I'm stuck on finding an answer.

I am trying to create an unsigned char array of size 1024 which I have done with the following code:

unsigned char *r_record = new unsigned char[1024]();

Now I have an std::string variable:

std::string hw = "Hello Word";

And I would like to populate the r_record with hw (i.e., 'Hello World') starting at the 10'th byte.

How can I place hw into r_record?

So in effect, my r_record data would look like (where the .'s are empty):

[.........Hello World......and so on]

Upvotes: 2

Views: 5168

Answers (1)

juanchopanza
juanchopanza

Reputation: 227370

You can use std::copy, from the algorithm header:

std::copy(hw.begin(), hw.end(), r_record + 10);

If you want to use a vector instead of the dynamically allocated array (a good idea), then

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

Upvotes: 8

Related Questions