C++ 如何将std::string复制到std::vector<;char>;?

C++ 如何将std::string复制到std::vector<;char>;?,c++,string,vector,copy,C++,String,Vector,Copy,可能重复: 我试过: std::string str = "hello"; std::vector<char> data; std::copy(str.c_str(), str.c_str()+str.length(), data); std::string str=“你好”; std::矢量数据; 复制(str.c_str(),str.c_str()+str.length(),数据); 但它不起作用=(因此我想知道如何将std::string复制到std::vector或st

可能重复:

我试过:

std::string str = "hello";
std::vector<char> data;
std::copy(str.c_str(), str.c_str()+str.length(), data);
std::string str=“你好”;
std::矢量数据;
复制(str.c_str(),str.c_str()+str.length(),数据);

但它不起作用=(因此我想知道如何将
std::string
复制到
std::vector
std::vector

std::vector
有一个构造函数,它使用两个迭代器。您可以使用:

std::string str = "hello";
std::vector<char> data(str.begin(), str.end());
std::string str=“你好”;
向量数据(str.begin(),str.end());
如果您已经有一个向量,并且希望在末尾添加字符,则需要一个反向插入器:

std::string str = "hello";
std::vector<char> data = /* ... */;
std::copy(str.begin(), str.end(), std::back_inserter(data));
std::string str=“你好”;
标准::矢量数据=/*…*/;
std::copy(str.begin()、str.end()、std::back_插入器(数据));

您需要一个反向插入器来复制到向量:

std::copy(str.c_str(), str.c_str()+str.length(), back_inserter(data));

使用搜索是很有帮助的,你知道……只需声明向量,如so std::vector@myWallJSON你的意思是将数据从
字符串
复制到
向量
?如果
字符
无符号字符
之间存在隐式转换(我认为存在,但我不确定)@R.Martinho:我很确定保留是不必要的,因为通用标准库实现将分派给专门用于随机访问迭代器的重载,这样他们就可以使用memmove了。这还会将空终止符复制到向量中吗?@R.Martinho:不会。如果不过,这是必要的。