atoi与双打和双打

时间:2011-05-16 16:17:35

标签: c++ double int atoi

我可以使用atoi将文本输入转换为对话框吗?

我需要对使用对话框输入的几个double值进行计算。我只知道'ati',但这只是整数吗?

6 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

答案 2 :(得分:1)

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

答案 3 :(得分:1)

您可以将std::stringstream用作:

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

答案 4 :(得分:1)

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

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

答案 5 :(得分:0)

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

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

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