строка с номерами меняет тип на long int

Я пишу на C ++, и у меня есть строка. Я хочу проверить, является ли эта строка только числами, и если это так, я хочу изменить тип на long int.

                       stringT = "12836564128606764591";
bool temp = false;
for(char& ch : stringT)
{
if(!isdigit(ch))
{
temp=true;
break;
}
}
if(temp != true)
{
itm = new Item_int((long long) strtoll(stringT.c_str(), NULL, 0));
std::cout << " itm:" << *itm << std::endl;}

но результат печати: 9223372036854775807

-4

Решение

Сначала переберите строку, чтобы найти любые нечисловые символы

bool is_number(const std::string& s)
{
std::string::const_iterator it = s.begin();
while (it != s.end() && std::isdigit(*it)) ++it;
return !s.empty() && it == s.end();
}

Чем преобразовать строку в int, если is_number успешно

long int number = 0;
if (is_number(stringT))
{
number = std::stol(stringT);
}
0

Другие решения

Число 12836564128606764591 больше, чем то, что может вписаться в long long,

Максимальная long long может держать это 9223372036854775807 (при условии, long long составляет 64 бита.

0

По вопросам рекламы [email protected]