2011-05-16 46 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的粉絲,但在這種情況下,似乎矯枉過正)