std :: se déplace entre std :: string et std :: vector & lt; unsigned char & gt;

Je travaille avec 2 bibliothèques. On prend et retourne std::strings, tandis que l'autre utilise std::vector<unsigned char>s.

Ce serait bien si je pouvais voler le sous-jacent de tableaux à partir de std::string et std::vector<unsigned char> et être en mesure de déplacer les uns les autres sans la copie excessive.

ATM-je utiliser quelque chose comme:

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();

Et dans l'autre sens:

std::string(
    reinterpret_cast<const char*>(&vector_value[0]),
    vector_value.size());

Il serait de loin préférable d'être en mesure de définir un:

std::string move_into(std::vector<unsigned char>&&);
std::vector<unsigned char> move_into(std::string&&);

source d'informationauteur genjix