「文字⇒数値」はatofでいいわ
sstreamのstringstream使えばいいんだろうけど、こっちの方がタイプ量的に楽。
あとはboost::lexical_cast使えないちゃんの時のために。
#include <iostream> #include <vector> #include <algorithm> //文字列⇒小数の変換ファンクタ struct ToDouble{double operator()(std::string x){return ::atof(x.c_str());}}; //表示用のファンクタ struct Show{void operator()(double x){std::cout << x << std::endl;}}; int main() { //適当な数値文字列 std::vector<std::string> x; x.push_back("10.13"); x.push_back("-97.13"); x.push_back("-5"); x.push_back("123"); //double型のベクターへ変換 std::vector<double> y(x.size()); std::transform(x.begin(), x.end(), y.begin(), ToDouble()); //結果表示 std::for_each(y.begin(), y.end(),Show()); return 0; }
結果(ちゃんと数値になってる)
10.13 -97.13 -5 123