2011-04-16 52 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和之后都指向同一个数组。

相关问题