Извлечение длинных чисел int из строки и помещение их в векторC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Извлечение длинных чисел int из строки и помещение их в вектор

Сообщение Anonymous »

Вот то, что я реализовал в прошлый раз, и этот код работает для большинства моих тестовых случаев, но не работает для этих случаев.

Код: Выделить всё

#include 
#include 
#include 
#include 
#include 
#include 
#include 

long long ConvertStringToNumber(std::string number) {
long long int finalNumber = 0;
bool isNegative = false;
int i = 0;
if (number.at(0) == '-') {
isNegative = true;
i++;
}
for (; i < number.length(); i++) {
if (number.at(i) < '0' || number.at(i) > '9') {
throw std::invalid_argument("Some error...");
}
if (finalNumber >
(std::numeric_limits::max() - (number.at(i) - '0')) / 10) {
throw std::overflow_error("Input string contains a number that is too large!!!");
throw std::range_error("Number is too large");
}
finalNumber = finalNumber * 10 + (number.at(i) - '0');
}
return isNegative ? -finalNumber : finalNumber;
}

std::vector NumbersInString(std::string s) {
std::vector numbers;
std::string currentNumber = "";
bool isNumber = true;
for (int i = 0; i < s.length(); i++) {
char c = s.at(i);
if ((c >= '0' && c = '0' && currentNumber.at(0)  'z') &&
(s.at(i) < 'A' || s.at(i) > 'Z'))) {
try {
long long int number = ConvertStringToNumber(currentNumber);
numbers.push_back(number);
} catch (std::domain_error &k) {
// skip it
}
}
}
currentNumber = "";
isNumber = false;
}
}

if (isNumber && !currentNumber.empty()) {
try {
long long int number = ConvertStringToNumber(currentNumber);
numbers.push_back(number);
} catch (std::domain_error &e) {
}
// skip again
}
return numbers;
}

int main() {
std::string input;
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/78228188/extracting-long-long-int-numbers-from-string-and-putting-them-in-vector[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»