From 7b47994ddd959ed814001e74622c4362fcf51fc2 Mon Sep 17 00:00:00 2001 From: y-syo Date: Mon, 1 Sep 2025 14:49:08 +0200 Subject: [PATCH] =?UTF-8?q?=E3=80=8C=F0=9F=94=A8=E3=80=8D=20fix(ex00):=20f?= =?UTF-8?q?ixed=20date=20parsing=20to=20be=20more=20precise=20:D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ex00/BitcoinExchange.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/ex00/BitcoinExchange.cpp b/ex00/BitcoinExchange.cpp index 17bd55d..272ed92 100644 --- a/ex00/BitcoinExchange.cpp +++ b/ex00/BitcoinExchange.cpp @@ -15,6 +15,14 @@ Date::Date(std::string str) { // check format (4 char & isdigit into dash into 2 char isdigit & < 1 && isdigit & < 2, and same for day except ahah funny cuz 30 and 31 and 28 and 29 agfjasfgfjahkfga) _value = 0; + for (size_t i = 0; str[i]; ++i) + { + if (!isdigit(str[i]) && !((i == (str.length() - 6) || i == (str.length() - 3)) && str[i] == '-')) + { + std::cout << str.length() - 6 << i << std::endl; + throw std::invalid_argument("invalid date."); + } + } for (std::string::iterator it = str.begin(); it < str.end(); ++it) { if (!isdigit(*it)) @@ -22,7 +30,6 @@ Date::Date(std::string str) _value *= 10; _value += *it - '0'; } - int year = _value / 10000; int month = (_value / 100) % 100; int day = _value % 100; @@ -167,7 +174,7 @@ void BitcoinExchange::str(std::string filename) continue ; } try { - Date date(date_str); + Date date(trim(date_str)); if (date < _data.begin()->first) { std::cout << "Error: input date too low." << std::endl;