将vector <string>转换为vector <double> </double> </string>的便捷方法

时间:2011-08-11 01:26:12

标签: c++

在C ++中有没有方便的方法将矢量转换为矢量而不是使用变换算法和istringstream?

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:9)

lexical_cast非常方便&#34;。

for(size_t i = 0; i < vec.size(); ++i) {
  vec2.push_back(boost::lexical_cast<double>(vec[i]));
}

当然,使用std::transform

会变得更加有趣
std::transform(strings.begin(), strings.end(), 
               std::back_inserter(doubles), 
               boost::lexical_cast<double, std::string>); // Note the two template arguments!

atof也可以满足您的需求,请记得加入cstdlib

std::transform(strings.begin(), strings.end(), std::back_inserter(doubles), 
               [](const std::string& x) { return std::atof(x.c_str()); });