Cout против fprintf против fputsC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Cout против fprintf против fputs

Сообщение Anonymous »

Я разрабатываю свою вспомогательную функцию так, чтобы она не вызывала исключений, поскольку я не хочу иметь дело с исключениями и иметь возможность использовать эту функцию в цикле while. Я также стараюсь следовать всем лучшим практикам, которым научился.

Код: Выделить всё

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;
Я хочу пометить свою функцию как noException. Но ChatGPT сказал мне, что std::cout потенциально (хотя и в редких случаях) может вызвать исключение, и что я должен предпочесть std::fputs или std::fprintf.
В другом приглашении ChatGPT сообщил мне, что вышеупомянутое ТАКЖЕ может вызвать проблемы.
Я полагаю, что в реальном приложении я бы, вероятно, использовал что-то вроде специального класса или метода Logger.
Но в этом конкретном случае В каком случае, чтобы гарантировать отсутствие исключений, какой из них использовать? cout/fputs/fprint? Или мне стоит отказаться от этой идеи вообще пометить функцию как noException?

Подробнее здесь: https://stackoverflow.com/questions/798 ... f-vs-fputs
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»