Namespaces
Variants

std::stoul, std::stoull

Начиная с ru.cppreference.net
 
 
 
std::basic_string
 
Определено в заголовке <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 - система счисления

Возвращаемое значение

Строка, преобразованная в указанный целочисленный тип без знака.

Исключения

Пример

Отчеты о дефектах

Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам 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)
преобразует строку в число с плавающей запятой
(функция)