3

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

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

4

6 回答 6

5

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

于 2011-05-16T16:19:30.000 回答
1

检查atoi, atol,strtol家庭:

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

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

于 2011-05-16T16:20:52.637 回答
1

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

于 2011-05-16T16:21:02.993 回答
1

您可以std::stringstream用作:

std::stringstream ss(text);
double value;
if ( !( ss >> value ) )
{
   std::cout << "error : text is not double" << std::endl;
}
于 2011-05-16T16:23:48.593 回答
1

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

char const s[] = "1.2345";
try
{
  double d = boost::lexical_cast<double>(s);
  ...
}
catch (boost::bad_lexical_cast &)
{
  ...
}
于 2011-05-16T17:27:02.300 回答
0

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

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

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

于 2011-05-16T17:37:14.643 回答