93 chars_format fmt = chars_format::general)
noexcept
103 return {last, std::errc::invalid_argument};
106 constexpr ptrdiff_t buffer_size = 100;
107 char buffer[buffer_size];
109 if (fmt != chars_format::general)
111 bool exponent_is_present{
false};
112 for (
auto it = first; it != last; ++it)
114 if (*it ==
'e' || *it ==
'E')
116 exponent_is_present =
true;
121 if (fmt == chars_format::scientific && !exponent_is_present)
122 return {last, std::errc::invalid_argument};
124 if (fmt == chars_format::fixed && exponent_is_present)
125 return {last, std::errc::invalid_argument};
135 if ((*last !=
'\0') || fmt == chars_format::hex)
145 if (fmt == chars_format::hex)
159 start =
const_cast<char *
>(first);
166 tmp = strtof(start, &end);
170 tmp = strtod(start, &end);
174 tmp = strtold(start, &end);
177 last = first + (end - start);
181 return {last, std::errc::result_out_of_range};
183 else if (tmp == 0 && end == start)
185 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:206
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:90
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:68
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:272