このような方法で文字列を変換することはお勧めできません:
string input = "81.312";
double val = atof(input.c_str());
std::atof
C++ では使用しないでください。それは入力エラーをチェックしません。
を使用しstd::stod
ます。エラーもチェックし、それに応じて例外をスローします。
また、std::string const &
引数としてとります。したがって、合格する必要はありませんinput.c_str()
。これを行うだけです:
double value = std::stod(input);
それは間違いではありませんが、boost::lexical_cast を使用する方が正しいでしょう。
これらのツールが NAN と INF を正しく処理するかどうかも確認する必要があります。