23 General utilities library [utilities]

23.2 Utility components [utility]

23.2.9 Primitive numeric input conversion [utility.from.chars]

Все названные функции from_­chars анализируют строку на [first, last) предмет шаблона, где [first, last) должен быть допустимый диапазон. Если ни один символ не соответствует шаблону, value не изменяется, член ptr возвращаемого значения равен, first а член ec равен errc​::​invalid_­argument. В противном случае символы, соответствующие шаблону, интерпретируются как представление значения типа value. Член ptr возвращаемого значения указывает на первый символ, не соответствующий шаблону, или имеет значение, last если все символы совпадают. Если проанализированное значение не находится в диапазоне, представленном типом value, value не изменяется и член ec возвращаемого значения равен errc​::​result_­out_­of_­range. В противном случае value устанавливается проанализированное значение, а член ec устанавливается таким образом, что преобразование в bool дает false.

from_chars_result from_chars(const char* first, const char* last, see below& value, int base = 10);

Requires: base имеет значение от 2 до 36 (включительно).

Effects: Шаблон - это ожидаемая форма субъектной последовательности в "C" локали для данной ненулевой базы, как описано для strtol, за исключением того, что префикс "0x" или не "0X" должен отображаться, если значение base равно 16, и за исключением того, что знак минус является единственным знаком, который может появиться , и только если value имеет подписанный тип.

Throws: Ничего такого.

Remarks: Реализация должна обеспечивать перегрузки для всех целочисленных типов со знаком и без знака, а также char в качестве ссылочного типа параметра value.

from_chars_result from_chars(const char* first, const char* last, float& value, chars_format fmt = chars_format::general); from_chars_result from_chars(const char* first, const char* last, double& value, chars_format fmt = chars_format::general); from_chars_result from_chars(const char* first, const char* last, long double& value, chars_format fmt = chars_format::general);

Requires: fmt имеет значение одного из перечислителей chars_­format.

Effects: Шаблон - это ожидаемая форма предметной последовательности в "C" локали, как описано для strtod, за исключением того, что

  • единственный знак, который может появиться, - это знак минус;

  • если fmt уже chars_­format​::​scientific установлено , но не chars_­format​::​fixed, то в противном случае обязательной часть экспонентов проставляется;

  • если fmt есть chars_­format​::​fixed набор , но не chars_­format​::​scientific, дополнительный показатель часть не должна появляться; а также

  • если fmt есть chars_­format​::​hex, то предполагается префикс "0x" или "0X" . [ Example: Строка 0x123 анализируется, чтобы получить значение 0 с оставшимися символами x123. ] end example

В любом случае результатом value является одно из максимум двух значений с плавающей запятой, ближайших к значению строки, соответствующей шаблону.

Throws: Ничего такого.

См. Также: ISO C 7.22.1.3, ISO C 7.22.1.4.