私は2つのライブラリを扱っています。 1つは取り込み、std::string
を返し、もう1つはstd::vector<unsigned char>
を返します。std :: std :: stringとstd :: vectorの間の移動<unsigned char>
std::string
とstd::vector<unsigned char>
から根本的な配列を盗んで、余分なコピーをせずにそれらを互いに移動させることができたらいいですね。
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();
そして、他の方法:
はATM私はのようなものを使用
std::string(
reinterpret_cast<const char*>(&vector_value[0]),
vector_value.size());
定義することができるようにそれははるかに良いだろう:
std::string move_into(std::vector<unsigned char>&&);
std::vector<unsigned char> move_into(std::string&&);
C++ 11は明示的に書き込み時にコピーを許可しませんか?彼らが「スペック」の法律を遵守しているかのように行動する限り、それを維持しない限り。私は小さな文字列の最適化がしばらくの間行っている方法だと思います。 –