Как преобразовать строку в длинный двойной?

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

string a="634.232";
long double x;
x=strtold(a.c_str(),0);

Например: это «strtold» изменения этот вход в этот вывод.

0

Решение

Проверьте на ошибки:

#include <cerrno>
#include <cstdlib>
#include <iostream>

const char str[] = "634.232";

int main()
{
char * e;
errno = 0;
long double val = std::strtold(str, &e);

if (*e != '\0' || errno != 0) { /* error */ std::abort(); }

std::cout << "SUccessfully parsed: " << val;
}

Обратите внимание, что синтаксический анализ строки может завершиться неудачей несколькими способами: строка может не представлять или не полностью представлять число, или число, которое она представляет, может быть слишком большим, чтобы поместиться в тип данных. Вы должны проверить все эти возможности, что и делает этот код. Указатель конца e проверяет, что мы использовали всю строку, и errno проверяет, что преобразование прошло успешно.

4

Другие решения

strtold должно работать нормально, так как KerrekSB предлагает.

Но пока вы проверяете свою работу, я бы рекомендовал использовать stold: http://www.cplusplus.com/reference/string/stold/

string a{"634.232"};
long double x{stold(a)};
2

По вопросам рекламы [email protected]