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::strtoul(str.c_str(), &ptr, base).std::wcstoul(str.c_str(), &ptr, base).std::strtoull(str.c_str(), &ptr, base).std::wcstoull(str.c_str(), &ptr, base).Отбрасывает все пробельные символы (как определено вызовом std::isspace) до первого непробельного символа, затем берет максимально возможное количество символов для формирования корректного представления беззнакового целого числа с основанием 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 локалью.
Если значение равно base0, числовое основание определяется автоматически: если префикс равен 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)
|
преобразует строку в число с плавающей запятой
(функция) |