将字符串转换为整数和双精度浮点数的atoi函数

3

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

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

6个回答

7
与atoi()类似,您可以使用double atof ( const char * str )来进行转换。有关更多信息,请参阅参考文献

2
假设您可以使用Boost,Boost.lexical_cast是一种流行的方法,用于将数字值转换为字符串表示形式,反之亦然,例如:
char const s[] = "1.2345";
try
{
  double d = boost::lexical_cast<double>(s);
  ...
}
catch (boost::bad_lexical_cast &)
{
  ...
}

1

您可以使用 std::stringstream,如下:

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


1

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


0

atoiatof都有些问题,无法进行任何错误检查。在大多数情况下,最简单的解决方案是使用strtod

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

(一般来说,我是istringstream的粉丝,但在这种情况下,它似乎有点过头了。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接