我正在使用两个库。其中一个使用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();
还有另一种方式:
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&&);
string& assign (const char* s, size_t n);
应该执行memcpy,而template <class InputIterator> string& assign (InputIterator first, InputIterator last);
则模拟它。 - Liviu