Code: Select all
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;
In einer anderen Eingabeaufforderung teilte mir ChatGPT mit, dass das oben erwähnte AUCH Probleme verursachen kann.
Ich nehme an, in einer realen Anwendung würde ich wahrscheinlich so etwas wie eine benutzerdefinierte Logger-Klasse oder -Methode verwenden.
Aber welche sollte man in diesem speziellen Fall verwenden, um sicherzustellen, dass keine Ausnahmen ausgelöst werden? cout/
Code: Select all
fputsCode: Select all
fprint
Mobile version