31 std::size_t processedInputChars;
33 parsedValue =
std::stod(inputString, &processedInputChars);
34 }
catch (
const std::logic_error &) {
36 processedInputChars = 0;
39 return processedInputChars == inputString.size() && std::isfinite(parsedValue)
40 ? makeQOhosOptional(parsedValue)
41 : makeEmptyQOhosOptional();
44std::string printfToString(
const char *format, ...)
49 auto dryVsnprintfResult = std::vsnprintf(
nullptr, 0, format, ap);
52 if (dryVsnprintfResult < 0)
53 qOhosReportFatalErrorAndAbort(
"String formatting with format '%s' failed: %d", format, dryVsnprintfResult);
55 auto outputSize =
static_cast<
std::size_t>(dryVsnprintfResult);
57 std::string output(outputSize + 1,
'\0');
60 auto vsnprintfResult = std::vsnprintf(&output[0], output.size(), format, ap);
63 if (vsnprintfResult < 0)
64 qOhosReportFatalErrorAndAbort(
"String formatting with format '%s' failed: %d", format, vsnprintfResult);
66 output.resize(outputSize);