std:: stoul, std:: stoull
|
Определено в заголовочном файле
<string>
|
||
|
unsigned
long
stoul
(
const
std::
string
&
str,
std:: size_t * pos = nullptr, int base = 10 ) ; |
(1) | (начиная с C++11) |
|
unsigned
long
stoul
(
const
std::
wstring
&
str,
std:: size_t * pos = nullptr, int base = 10 ) ; |
(2) | (начиная с C++11) |
|
unsigned
long
long
stoull
(
const
std::
string
&
str,
std:: size_t * pos = nullptr, int base = 10 ) ; |
(3) | (начиная с C++11) |
|
unsigned
long
long
stoull
(
const
std::
wstring
&
str,
std:: size_t * pos = nullptr, int base = 10 ) ; |
(4) | (начиная с C++11) |
Интерпретирует целое число без знака в строке str .
Пусть ptr будет внутренним (для функций преобразования) указателем типа char * (1,3) или wchar_t * (2,4) соответственно.
Отбрасывает любые пробельные символы (определяемые вызовом
std::isspace
) до первого непробельного символа, затем принимает максимально возможное количество символов, формирующих корректное представление
base-n
(где n=
base
) беззнакового целого числа и преобразует их в целочисленное значение. Корректное беззнаковое целочисленное значение состоит из следующих частей:
- (необязательно) знак плюс или минус
-
(необязательно)
префикс (
0), обозначающий восьмеричную систему счисления (применяется только когда основание равно 8 или 0 ) -
(необязательно)
префикс (
0xили0X), обозначающий шестнадцатеричную систему счисления (применяется только когда основание равно 16 или 0 ) - последовательность цифр
Множество допустимых значений для основания системы счисления составляет
{0, 2, 3, ..., 36}
. Множество допустимых цифр для целых чисел с основанием
2
составляет
{0, 1}
, для целых чисел с основанием
3
—
{0, 1, 2}
и так далее. Для оснований больше
10
допустимые цифры включают буквенные символы, начиная с
Aa
для целых чисел с основанием
11
и до
Zz
для целых чисел с основанием
36
. Регистр символов игнорируется.
Дополнительные числовые форматы могут приниматься текущей установленной C локалью .
Если значение
base
равно
0
, система счисления определяется автоматически: если префикс
0
, используется восьмеричная система, если префикс
0x
или
0X
, используется шестнадцатеричная система, в противном случае используется десятичная система.
Если знак минуса был частью входной последовательности, числовое значение, вычисленное из последовательности цифр, инвертируется как если бы с помощью унарного минуса в результирующем типе, который применяет правила переполнения беззнаковых целых чисел.
Если pos не является нулевым указателем, то ptr получит адрес первого непереконвертированного символа в str. c_str ( ) , а индекс этого символа будет вычислен и сохранён в * pos , указывая количество символов, обработанных при конвертации.
Содержание |
Параметры
| str | - | строка для преобразования |
| pos | - | адрес целого числа для сохранения количества обработанных символов |
| base | - | система счисления |
Возвращаемое значение
Строка, преобразованная в указанный целочисленный тип без знака.
Исключения
- std::invalid_argument если преобразование не может быть выполнено.
- std::out_of_range если преобразованное значение выходит за пределы диапазона результирующего типа или если базовая функция ( std::strtoul или std::strtoull ) устанавливает errno в ERANGE .
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Отчеты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 2009 | C++11 |
std::out_of_range
не выбрасывалось бы, если
std::strtoul или std::strtoull устанавливает errno в ERANGE |
будет выбрасываться |
Смотрите также
|
(C++11)
(C++11)
(C++11)
|
преобразует строку в знаковое целое число
(функция) |
|
(C++11)
(C++11)
(C++11)
|
преобразует строку в число с плавающей запятой
(функция) |