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-локаль может допускать дополнительные числовые форматы.
Если значение 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 | Применяется к | Поведение согласно опубликованной версии | Исправленное поведение |
|---|---|---|---|
| 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) | преобразует строку в значение с плавающей точкой (функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/string/basic_string/stoul