困惑如何在c++中使用strtod()从字符串转换为双精度

Confused how to convert from a string to double using strtod() in C++

本文关键字:字符串 转换 双精度 strtod c++      更新时间:2023-10-16

如果有人能解释一下如何使用这个函数,那就太好了。我看不懂这些参数。

谢谢

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

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

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

如果你在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; }