转换矢量<vector <char>&gt;到矢量<string> </string> </vector <char>

时间:2014-04-04 09:09:23

标签: c++ string c++11 vector stl

我有一个

std::vector<std::vector<char>>并希望用std::vector<string>填充其内容。

我无法理解如何访问内部向量并将字符放入字符串向量中。

也许我错了,但我认为std::vector<char>就像一个字符串。 所以这应该不难做到,我只是卡在了我的脑海里。

我已经看到了这个: vector<string> or vector< vector<char> >?但它并没有让我走得太远。

感谢您的帮助。

4 个答案:

答案 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后,填充矢量很容易。