No开发者_开发问答te that in general, double
is different from long double
.
strtod
converts string to double
, but which function should be use to converting string to long double?
In C++03, use boost::lexical_cast
, or:
std::stringstream ss(the_string);
long double ld;
if (ss >> ld) {
// it worked
}
In C99, use strtold
.
In C89, use sscanf
with %Lg
.
In C++11 use stold
.
There may be subtle differences as to exactly which formats each one accepts, so check the details first...
You've tagged your question as "C++", so I'm going to give you a C++ answer:
Why not just use streams?
std::stringstream ss(myString);
long double x;
ss >> x;
In c++, I can only recommend boost::lexical_cast
(or in general via the IOStreams).
In c ? no idea.
You can use istream
to read long double from string. See here http://www.cplusplus.com/reference/iostream/istream/operator%3E%3E/
If you like scanf
family of functions, read with %Lf
精彩评论