Какую функцию следует использовать для преобразования строки в long double? - PullRequest
4 голосов
/ 12 сентября 2011

Обратите внимание, что в целом double отличается от long double.

strtod, преобразует строку в double, но какую функцию следует использовать для преобразования строки в long double?

Ответы [ 4 ]

15 голосов
/ 12 сентября 2011

В C ++ 03 используйте boost::lexical_cast или:

std::stringstream ss(the_string);
long double ld;
if (ss >> ld) {
    // it worked
}

В C99 используйте strtold.

В C89 используйте sscanf с %Lg.

В C ++ 11 используйте stold.

Могут быть тонкие различия в том, какие именно форматы принимает каждый, поэтому сначала проверьте детали ...

6 голосов
/ 12 сентября 2011

Вы пометили свой вопрос как "C ++", поэтому я собираюсь дать вам ответ C ++:

Почему бы просто не использовать потоки?

std::stringstream ss(myString);
long double x;
ss >> x;
1 голос
/ 12 сентября 2011

Вы можете использовать istream для чтения длинных двойных строк. Смотрите здесь http://www.cplusplus.com/reference/iostream/istream/operator%3E%3E/

Если вам нравится scanf семейство функций, читайте с %Lf

1 голос
/ 12 сентября 2011

В c ++ я могу рекомендовать только boost::lexical_cast (или вообще через IOStreams).

В с? без понятия.

...