Question

Note 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?

Was it helpful?

Solution

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...

OTHER TIPS

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top