Pergunta

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?

Foi útil?

Solução

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

Outras dicas

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top