Spec-Zone.ru › C++

std::stoul, std::stoull

Defined in header <string>
unsigned long      stoul ( const std::string& str,
                           std::size_t* pos = nullptr, int base = 10 );
(1) (since C++11)
unsigned long      stoul ( const std::wstring& str,
                           std::size_t* pos = nullptr, int base = 10 );
(2) (since C++11)
unsigned long long stoull( const std::string& str,
                           std::size_t* pos = nullptr, int base = 10 );
(3) (since C++11)
unsigned long long stoull( const std::wstring& str,
                           std::size_t* pos = nullptr, int base = 10 );
(4) (since 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 locale.

Если значение 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/w/cpp/string/basic_string/stoul

Spec-Zone.ru

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