Код: Выделить всё
namespace auxiliary {
static bool str_to_double(const std::string &line, double &res) noexcept {
char *end = nullptr;
errno = 0;
double value = strtod(line.c_str(), &end);
if (line.empty()) {
std::fputs("line is empty!\n", stderr);
} else if (end == line.c_str()) {
std::fputs("No characters consumed. Couldn't parse event the first character!\n", stderr);
} else if (*end != '\0') {
std::fputs("trailing nonnumerical character(s) detected\n", stderr);
} else if (errno == ERANGE) {
std::fputs("Overflow or underflow for double\n", stderr);
} else {
// everything's alright
res = value;
return true;
}
return false;
}
} namespace aux = auxiliary;
В другом приглашении ChatGPT сообщил мне, что вышеупомянутое ТАКЖЕ может вызвать проблемы.
Я полагаю, что в реальном приложении я бы, вероятно, использовал что-то вроде специального класса или метода Logger.
Но в этом конкретном случае В каком случае, чтобы гарантировать отсутствие исключений, какой из них использовать? cout/fputs/fprint? Или мне стоит отказаться от этой идеи вообще пометить функцию как noException?
Подробнее здесь: https://stackoverflow.com/questions/798 ... f-vs-fputs
Мобильная версия