std::stoi, std::stol, std::stoll
Определено в заголовочном файле <string>
|
||
int stoi( const std::string& str, size_t *pos = 0, int base = 10 ); |
(1) | (начиная с C++11) |
long stol( const std::string& str, size_t *pos = 0, int base = 10 ); |
(2) | (начиная с C++11) |
long long stoll( const std::string& str, size_t *pos = 0, int base = 10 ); |
(3) | (начиная с C++11) |
Извлекает знаковое целое число из строки str
.
Пропускаются все пробельные символы (которые определяются таковыми с помощью вызова функции isspace()
), до тех пор пока не встретится первый символ другого типа, затем берётся как много больше символов, которые формируют корректную запись целочисленного числа в n-системе счисления (где n = base) , и конвертирует её в значение нужного типа. Корректная запись целого числа состоит из следующих частей:
- (необязательно) знак плюса или минуса
- (необязательно) префикс (
0
), который обозначает использование 8-ричной системы счисления (применимо только тогда, когда base равен 8 или 0) - (необязательно) префикс (
0x
или0X
), который обозначает использование 16-ричной системы счисления (применимо только тогда, когда base равен 16 или 0) - последовательность цифр.
Допустимый набор цифр для 2-ричной системы счисления - 01
, для 3-ичной - 012
и так далее, начиная с 11-ричной системы счисления в диапазон допустимых цифр входят латинские буквы от Aa
до Zz
для 36-ричной системы счисления. В этом случае регистр букв не имеет значения.
Дополнительные форматы для чисел могут применяться, используя региональные параметры Си.
Если значение base равно 0, то система счисления автоматически определяется: если присутствует префикс 0
, то она 8-ричная, если 0x
или 0X
, то 16-ричная, иначе 10-ричная.
Если знак минуса был частью входной последовательности, то числовое значение вычисляется, путём применения к числу из последовательности цифр операции унарного минуса.
Индекс первого непреобразованного символа сохраняется в pos
. Если в качестве pos
передан NULL, параметр игнорируется.
Содержание |
[править] Параметры
str | - | строка для преобразования |
pos | - | адрес переменной целочисленного типа для сохранения в ней индекса первого непреобразованного символа |
base | - | основание системы счисления |
[править] Возвращаемое значение
Строка, преобразованная в указанный знаковый целочисленный тип.
[править] Исключения
- std::invalid_argument, если преобразование не может быть выполнено
- std::out_of_range, если преобразованное значение будет выходить за границы диапазона значений типа результата
[править] Пример
#include <iostream> #include <string> int main() { std::string test = "45"; int myint = stoi(test); std::cout << myint << '\n'; }
Вывод:
45
[править] См. также
Преобразует однобайтовую строку в целое число (функция) | |
(C++11) (C++11) |
преобразует строку в беззнаковое целое число (функция) |
(C++11) (C++11) (C++11) |
преобразует строку в число с плавающей точкой (функция) |
(C++11) |
преобразует целое число или число с плавающей точкой в string (функция) |