我可以使用atoi将文本输入转换为double类型的对话框吗?
我需要对使用对话框输入的几个double值进行计算。我只知道'atoi',但这仅适用于整数吗?
char const s[] = "1.2345";
try
{
double d = boost::lexical_cast<double>(s);
...
}
catch (boost::bad_lexical_cast &)
{
...
}
您可以使用 std::stringstream
,如下:
std::stringstream ss(text);
double value;
if ( !( ss >> value ) )
{
std::cout << "error : text is not double" << std::endl;
}
atoi
和atof
都有些问题,无法进行任何错误检查。在大多数情况下,最简单的解决方案是使用strtod
:
char* endPtr;
errno = 0;
value = strtod( input, &endPtr );
if ( errno != 0 || *skipSpaces( endPtr ) != '\0' )
// Illegal input, conversion failed.
(一般来说,我是istringstream
的粉丝,但在这种情况下,它似乎有点过头了。)