2011-05-16 54 views
2

我可以使用atoi将文本输入转换为双精度对话框吗?atoi与整数和双打

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

回答

1

假设升压是一个选项,Boost.lexical_cast是转换和数值的字符串表示一个常用的方法,如:

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

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

1

C++(不只是C),那么你可以使用stl的将文本解析为浮点数。

1

您可以使用std::stringstream为:

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

两个atoiatof或多或少被破坏;没有办法做任何错误检查。在大多数情况下,最简单的办法是使用strtod

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

(我一般的istringstream的粉丝,但在这种情况下,似乎矫枉过正)