По умолчанию std::stoi()
ожидает строку в формате base10 (десятичный). Но вместо этого вы передаете ему строку в формате base2 (двоичный). Когда эта строка base2 интерпретируется в base10, если результат превысит границы int
, тогда будет выбрано исключение std::out_of_range
:
Исключения
std::invalid_argument
, если преобразование не может быть выполнено
std::out_of_range
, если преобразованное значение выпадет за пределы диапазона типа результата или если базовая функция (std::strtol
или std::strtoll
) устанавливает errno
в ERANGE
.
std::stoi()
имеет необязательный параметр base
, который вы можете установить на 2 для двоичного, например:
cout << stoi(nu_bits, nullptr, 2);