78 chars_format fmt = chars_format::general)
noexcept
88 return {last, std::errc::invalid_argument};
91 constexpr ptrdiff_t buffer_size = 100;
92 char buffer[buffer_size];
94 if (fmt != chars_format::general)
96 bool exponent_is_present{
false};
97 for (
auto it = first; it != last; ++it)
99 if (*it ==
'e' || *it ==
'E')
101 exponent_is_present =
true;
106 if (fmt == chars_format::scientific && !exponent_is_present)
107 return {last, std::errc::invalid_argument};
109 if (fmt == chars_format::fixed && exponent_is_present)
110 return {last, std::errc::invalid_argument};
120 if ((*last !=
'\0') || fmt == chars_format::hex)
130 if (fmt == chars_format::hex)
144 start =
const_cast<char *
>(first);
151 tmp = strtof(start, &end);
155 tmp = strtod(start, &end);
159 tmp = strtold(start, &end);
162 last = first + (end - start);
166 return {last, std::errc::result_out_of_range};
168 else if (tmp == 0 && end == start)
170 return {last, std::errc::invalid_argument};
to_chars_result to_chars(char *first, char *last, floating_point_type value) noexcept
std::to_chars overload for floating point via a std::stringstream for default base = 10.
Definition charconv:191
from_chars_result from_chars_floating_point(char const *first, char const *last, value_type &value, chars_format fmt=chars_format::general) noexcept
Delegates to functions strto[d/f/ld] for floating point value extraction.
Definition charconv:75
to_chars_result to_chars_floating_point(char *first, char *last, value_type value) noexcept
std::to_chars implementation for floating point via a std::stringstream for default base = 10.
Definition charconv:53
from_chars_result from_chars(char const *first, char const *last, floating_point_type &value, chars_format fmt=chars_format::general) noexcept
Parse a char sequence into an floating point value.
Definition charconv:257