Пространства имён
Варианты
Действия

std::stoi, std::stol, std::stoll

Материал из cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
Функции-члены
Доступ к элементам
Итераторы
Вместимость
 
Defined in header <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
(функция) [править]