我有一个
std::vector<std::vector<char>>
并希望用std::vector<string>
填充其内容。
我无法理解如何访问内部向量并将字符放入字符串向量中。
也许我错了,但我认为std::vector<char>
就像一个字符串。
所以这应该不难做到,我只是卡在了我的脑海里。
我已经看到了这个: vector<string> or vector< vector<char> >?但它并没有让我走得太远。
感谢您的帮助。
答案 0 :(得分:13)
这是algorithm
版本
std::vector<std::vector<char>> a;
std::vector<std::string> b;
std::transform(a.begin(), a.end(), std::back_inserter(b),
[](std::vector<char> const& v) -> std::string {
return {v.begin(), v.end()};
});
答案 1 :(得分:11)
天真的解决方案应该运作良好:
std::vector<std::string>
chars_to_string(std::vector<std::vector<char>> const & in)
{
std::vector<std::string> out;
out.reserve(in.size());
for (auto const & v : in)
out.emplace_back(v.begin(), v.end());
return out;
}
答案 2 :(得分:3)
这应该有效
std::vector<string> vec;
for(std::vector<std::vector<char>>::iterator itr = source.begin();
itr != source.end(); ++itr) {
vec.push_back(std::string(itr.begin(),itr.end()));
);
答案 3 :(得分:2)
我认为你可以做到:
std::vector<char> v_char;
std::string my_string(v_char.begin(), v_char.end());
或者(需要C ++ 11并且char的向量必须以NULL结尾):
std::string my_string(v_char.data());
获得std::string
后,填充矢量很容易。