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), соответственно.
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 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 |
будет выброшена |
См. также
|
(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/w/cpp/string/basic_string/stoul