数値(整数だけでなく、浮動小数点型または倍精度型でも)になる文字列があり、数値以外の単語にすることもできます。
この文字列が double に変換できるかどうかを確認したいのですが、そうであれば変換を行いたいと思います。数値以外の文字列の場合は、別の動作が必要です。
私はこれを試しました:
double tmp;
string str;
stringstream ss;
ss << str;
ss >> tmp;
if (ss.fail())
{
// non-numeric string
}
else
{
// string to double conversion is successful
}
このコードの問題は、正しい値が含まれている場合でも、ss.fail()
常にであるということです。true
tmp
文字列を double に変換する関数がありますが、入力文字列が数値以外の場合に値atof()
を返すため、これは私には適していません。0.0
このようにして、非数値とゼロの入力値を区別することはできません。