Добавление длинного двойного литерального суффикса к пользовательским вводам в переполнении стека

У меня есть класс, который имеет длинный двойной вектор:

MyClass{
vector<long double> myvec;
public:
MyClass(){ //Constructor }

// Some memeber functions that operate on the vector
};

Я перегружен оператором ввода, и я беру ввод от пользователя, который затем помещается в вектор. Проблема, с которой я сталкиваюсь, заключается в том, что если пользователь вводит число, выходящее за пределы диапазона двойного, код должен добавить и добавить длинный двойной суффикс к вводу без того, чтобы пользователь тоже имел. Это то, что я пробовал до сих пор:

long double input;
...
input = (long double)(input + "L");
myvec.push_back(input);

Я думал об использовании scanf, но я не уверен, насколько безопасно это использовать при перегрузке оператора ввода.

0

Решение

использование std::stold преобразовать входной текст в длинный двойной. Нет необходимости в суффиксе; stold сделаю это правильно. Суффикс нужен в исходном коде сообщить компилятору, какой тип представляет текст. Когда вы читаете из внешнего источника, компилятор не задействован, поэтому вы должны сами разобраться с типом.

4

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

Суффиксы предназначены только для буквальных значений, например auto x = 12345.0L, Вы используете их для предотвращения неявных преобразований, так как тип литерала с плавающей точкой по умолчанию double,
Вы не можете использовать их в именованной переменной.
Вопрос в том, как вы получаете свой вклад?

1

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