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

可能重复:
将std :: string转换为std :: vector <char>

我试过了:

std::string str = "hello";
std::vector<char> data;
std::copy(str.c_str(), str.c_str()+str.length(), data);

但是它不起作用=(所以我想知道如何将std::string复制到std::vector<char>std::vector<uchar>中吗?

myWallJSON asked 2019-11-13T15:29:33Z
2个解决方案
125 votes

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

std::string str = "hello";
std::vector<char> data(str.begin(), str.end());

如果您已经有一个向量,并且想要在末尾添加字符,则需要一个反向插入器:

std::string str = "hello";
std::vector<char> data = /* ... */;
std::copy(str.begin(), str.end(), std::back_inserter(data));
R. Martinho Fernandes answered 2019-11-13T15:30:07Z
8 votes

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

std::copy(str.c_str(), str.c_str()+str.length(), back_inserter(data));
dasblinkenlight answered 2019-11-13T15:30:32Z
translate from https://stackoverflow.com:/questions/8263926/how-to-copy-stdstring-into-stdvectorchar