混淆了如何使用C ++中的strtod()将字符串转换为double

时间:2011-04-16 14:45:45

标签: c++ strtod

如果有人可以解释如何使用该功能,那就太棒了。我不明白参数。

由于

4 个答案:

答案 0 :(得分:5)

第一个参数是指向字符的指针。 c_str()为您提供来自字符串对象的指针。第二个参数是可选的。它将包含指向字符串中数值后面的下一个char的指针。有关更多信息,请参阅http://www.cplusplus.com/reference/clibrary/cstdlib/strtod/

string s;
double d;

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

答案 1 :(得分:3)

第一个参数是要转换的字符串,第二个参数是对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和after都指向同一个数组。

答案 2 :(得分: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; }

答案 3 :(得分:0)

我不明白参数。

点击此链接strtod。以示例提供所有信息。