Я работаю с 2 библиотеками. Один принимает и возвращает std::string
, в то время как другой использует std::vector<unsigned char>
s.
Было бы хорошо, если бы я мог украсть базовые массивы из std::string
и std::vector<unsigned char>
и иметь возможность перемещать их друг в друга без чрезмерного копирования.
ATM Я использую что-то вроде:
const unsigned char* raw_memory =
reinterpret_cast<const unsigned char*>(string_value.c_str()),
std::vector<unsigned char>(raw_memory, raw_memory + string_value.size();
И наоборот:
std::string(
reinterpret_cast<const char*>(&vector_value[0]),
vector_value.size());
Было бы намного лучше определить a:
std::string move_into(std::vector<unsigned char>&&);
std::vector<unsigned char> move_into(std::string&&);