将矢量<string>转换为矢量<double>的便捷方法

Convenient way to convert vector<string> to vector<double>

本文关键字:lt gt 方法 string 转换 double      更新时间:2023-10-16

在c++中是否有任何方便的方法来将一个矢量转换为一个矢量,而不是使用转换算法和istringstream?

谢谢你的帮助!

lexical_cast相当"方便"。

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()); });