阿托伊与整数和双精度

atoi with ints and doubles

本文关键字:双精度 整数      更新时间:2023-10-16

是否可以使用 atoi 将对话框的文本输入转换为双精度?

我需要对使用对话框输入的几个双精度值进行计算。我只知道"atoi",但这仅适用于整数吗?

与 atoi() 类似,您可以使用double atof ( const char * str )参考

假设 Boost 是一个选项,Boost.lexical_cast 是一种流行的方法来转换数值的字符串表示,例如:

char const s[] = "1.2345";
try
{
  double d = boost::lexical_cast<double>(s);
  ...
}
catch (boost::bad_lexical_cast &)
{
  ...
}

检查atoiatolstrtol族:

http://www.fiveanddime.net/man-pages/strtol.3.html

http://www.kernel.org/doc/man-pages/online/pages/man3/strtol.3.html

如果你

真的在使用C++(不仅仅是C),那么你可以使用stl的std::istringstream将文本解析为浮点数。

>您可以将std::stringstream用作:

std::stringstream ss(text);
double value;
if ( !( ss >> value ) )
{
   std::cout << "error : text is not double" << std::endl;
}

atoiatof 都或多或少被破坏了;没有办法进行任何错误检查。 在大多数情况下,最简单的解决方案是使用 strtod

char* endPtr;
errno = 0;
value = strtod( input, &endPtr );
if ( errno != 0 || *skipSpaces( endPtr ) != '' )
    //  Illegal input, conversion failed.

(我通常是istringstream的粉丝,但在这种情况下,这似乎矫枉过正。