gpt4 book ai didi

c++ - std::在 std::string 和 std::vector 之间移动

转载 作者:IT老高 更新时间:2023-10-28 23:14:13 26 4
gpt4 key购买 nike

我正在使用 2 个库。一进一退std::string s 而其他使用 std::vector<unsigned char>秒。

如果我能从 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());

如果能定义一个会更好:

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

最佳答案

您可以使用迭代器进行初始化。看看here

编辑:粘贴代码,这样您就不必去 ideone。仍然留下链接,以便您可以玩代码

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main() {
string a = "Hello world";
vector<unsigned char> v(a.begin(), a.end());
for (int i= 0 ;i< v.size(); ++i) {
cout << v[i] << endl;
}
string s(v.begin(), v.end());
cout << s << endl;
return 0;
}

关于c++ - std::在 std::string 和 std::vector<unsigned char> 之间移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10445042/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com