У меня есть std :: vector. Я хочу скопировать содержимое вектора в буфер char * определенного размера.
Есть ли безопасный способ сделать это?
Могу я сделать это?
memcpy(buffer, _v.begin(), buffer_size);
или это?
std::copy(_v.begin(), _v.end(), buffer); // throws a warning (unsafe)
или это?
for (int i = 0; i < _v.size(); i++)
{
*buffer = _v[i];
buffer++;
}
Спасибо ..
static std::vector<unsigned char> read_binary_file (const std::string filename)
{
// binary mode is only for switching off newline translation
std::ifstream file(filename, std::ios::binary);
file.unsetf(std::ios::skipws);
std::streampos file_size;
file.seekg(0, std::ios::end);
file_size = file.tellg();
file.seekg(0, std::ios::beg);
std::vector<unsigned char> vec(file_size);
vec.insert(vec.begin(),
std::istream_iterator<unsigned char>(file),
std::istream_iterator<unsigned char>());
return (vec);
}
и затем:
auto vec = read_binary_file(filename);
auto src = (char*) new char[vec.size()];
std::copy(vec.begin(), vec.end(), src);
, но не забывают удалять [] src позже