Как конвертировать String в Int?
Пользователь вводит ключ,после чего он должен расшифроваться (поделиться на 19001)и получится строка состоящая из даты конца работы и id железа.Но у меня проблема,я не могу из string достать строку,ошибка переполнения,как я понимаю из за того что stoi() возвращает int,а у меня число намного больше.
bool checkKey()
{
string strUserkey = "0";
long long llUserkey;
cout << "Введите ключ: ";
cin >> strUserkey;
try
{
llUserkey = stoi(strUserkey);
}
catch (invalid_argument)
{
cout << "Невалидный ключ";
return 0;
}
if (llUserkey <= 0)
{
cout << "Невалидный ключ";
return 0;
}
llUserkey /= 19001;
cout << llUserkey;
return 1;
}
Ответы (1 шт):
Автор решения: samiy-slavniy
→ Ссылка
#include <bits/stdc++.h>
using namespace std;
char s[100000];
int i, c, j, x, y, r, b = 19001;
vector<int> a;
int main() {
// Считываем длинное число
for(cin >> s, i = strlen(s) - 1; i >= 0; i--)
a.push_back(s[i] - '0');
// Деление длинного на короткое
for (c = 0, i = a.size() - 1; i >= 0; --i) {
long long cur = a[i] + c * 1ll * 10;
a[i] = cur / b;
c = cur % b;
}
// Удаляем лидирующие нули
while (a.size() > 1 && a.back() == 0) a.pop_back();
// Выводим результат
for (i = a.size() - 1; i >= 0; --i)
cout << a[i];
}