Код: Выделить всё
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 или метод.
Но в данном конкретном случае, чтобы гарантировать отсутствие исключений, какой из них использовать? выход/
Код: Выделить всё
fputs/fprint? Или мне вообще стоит отказаться от этой идеи пометить функцию как noExceptionПодробнее здесь: https://stackoverflow.com/questions/798 ... f-vs-fputs
Мобильная версия