Spec-Zone.ru › C++

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) соответственно.

1) Вызывает std::strtoul(str.c_str(), &ptr, base).
2) Вызывает std::wcstoul(str.c_str(), &ptr, base).
3) Вызывает std::strtoull(str.c_str(), &ptr, base).
4) Вызывает 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
будет выброшено

См. также

stoistolstoll
(C++11)(C++11)(C++11)
преобразует строку в знаковое целое число
(функция)
stofstodstold
(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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API