Как перевести строку в число

226
16 мая 2018, 20:30

Имеется ли в с++ готовая функция которая бы могла попытаться преобразовать строку в число (double к примеру), и при неудаче возвращала бы не ноль, а к примеру NAN?

Answer 1
#include <iostream>
#include <cmath>
double my_atof(const char *str) {
    double d;
    try {
        d = std::stod(str);
    }
    catch (...) {
        return std::nan("");
    }
    return d;
}
int main() {
    double d = my_atof("0");
    std::cout << d << std::endl;
    d = my_atof("0.0f");
    std::cout << d << std::endl;
    d = my_atof("3.445");
    std::cout << d << std::endl;
    d = my_atof("www");
    std::cout << d << std::endl;
    d = my_atof("    ");
    std::cout << d << std::endl;
}

0
0
3.445
nan
nan

Answer 2
public:
static double ToDouble(
    String^ value
)

Пример:

double targetNumber = Convert::ToDouble(value2);

"При неудаче" - try{} catch(...){} в помощь

READ ALSO
не переводит в переменную

не переводит в переменную

подскажите пожалуйста у меня в переменной int res не приводит к целому значению

235
Обертка над boost::signals

Обертка над boost::signals

Недавно начал изучать boostОбратил внимание на сигналы/слоты

235
Перегруженная функция чистильщика

Перегруженная функция чистильщика

Как исправить данную ошибку

539
C++ массивы байт переменной (неизвестной) длины для представления данных и SHA256

C++ массивы байт переменной (неизвестной) длины для представления данных и SHA256

Хочу переписать этот код с Go на C++/Boost ради опыта работы с библиотеками типа asio

222