2011-04-16 41 views

回答

5

第一個參數是一個指向字符。 c_str()從字符串對象中爲您提供該指針。第二個參數是可選的。它將包含一個指向字符串中數值之後的下一個字符的指針。有關更多信息,請參見http://www.cplusplus.com/reference/clibrary/cstdlib/strtod/

string s; 
double d; 

d = strtod(s.c_str(), NULL); 
1

如果您使用的是C++,那麼爲什麼不使用std::stringstream

std::stringstream ss("78.987"); 

double d; 
ss >> d; 

,或者甚至更好boost::lexical_cast爲:

double d; 
try 
{ 
    d = boost::lexical_cast<double>("889.978"); 
} 
catch(...) { std::cout << "string was not a double" << std::endl; } 
+2

他的意思是使用strtod() – fazo 2011-04-16 14:49:41

+1

Fazo是正確的,但我欣賞輸入,無論 – Sam 2011-04-16 14:57:17

+0

它的工作原理,但它非常緩慢。 – 2016-09-10 03:06:58

0

我不明白的參數。

查看該鏈接strtod。通過示例提供所有信息。

2

第一個參數是要轉換的字符串,第二個參數是對char *的引用,您希望指向原始字符串中float後面的第一個char(如果您想要開始讀取數字後的字符串)。如果你不關心第二個參數,你可以將它設置爲NULL。

例如,如果我們有以下變量:

char* foo = "3.14 is the value of pi" 
float pi; 
char* after; 

pi = strtod(foo, after)後的值將是:

foo is "3.14 is the value of pi" 
pi is 3.14f 
after is " is the value of pi" 

注意,這兩個foo和之後都指向同一個數組。

相關問題