From 5d93eb2fd3884c7e18dff7f73b06d0c97d49f7e2 Mon Sep 17 00:00:00 2001 From: Raphael Date: Sun, 23 Mar 2025 18:42:14 +0100 Subject: [PATCH] feat: adding the convert char / int --- cpp06/ex00/Makefile | 6 ++- cpp06/ex00/includes/ScalarConverter.hpp | 7 ++- cpp06/ex00/sources/ScalarConverter.cpp | 69 +++++++------------------ 3 files changed, 28 insertions(+), 54 deletions(-) diff --git a/cpp06/ex00/Makefile b/cpp06/ex00/Makefile index 8bb8c29..e8a03e1 100644 --- a/cpp06/ex00/Makefile +++ b/cpp06/ex00/Makefile @@ -6,7 +6,7 @@ # By: rparodi +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2023/11/12 11:05:05 by rparodi #+# #+# # -# Updated: 2025/03/21 15:09:04 by rparodi ### ########.fr # +# Updated: 2025/03/22 22:20:09 by rparodi ### ########.fr # # # # **************************************************************************** # @@ -30,7 +30,9 @@ DEBUG += -fsanitize=address CXXFLAGS += $(DEBUG) # Sources -SRC = sources/ScalarConverter.cpp \ +SRC = sources/char.cpp \ + sources/ScalarConverter.cpp \ + sources/integer.cpp \ main.cpp # Objects diff --git a/cpp06/ex00/includes/ScalarConverter.hpp b/cpp06/ex00/includes/ScalarConverter.hpp index ec63396..33a93d1 100644 --- a/cpp06/ex00/includes/ScalarConverter.hpp +++ b/cpp06/ex00/includes/ScalarConverter.hpp @@ -6,7 +6,7 @@ /* By: rparodi +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/03/20 15:50:13 by rparodi #+# #+# */ -/* Updated: 2025/03/21 15:05:26 by rparodi ### ########.fr */ +/* Updated: 2025/03/22 22:20:50 by rparodi ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,11 @@ #include +bool isInt(std::string const &str); +void convertInt(std::string const &str); +bool isChar(std::string const &str); +void convertChar(std::string const &str); + class ScalarConverter { public: ScalarConverter(); diff --git a/cpp06/ex00/sources/ScalarConverter.cpp b/cpp06/ex00/sources/ScalarConverter.cpp index 253db2d..7b23fda 100644 --- a/cpp06/ex00/sources/ScalarConverter.cpp +++ b/cpp06/ex00/sources/ScalarConverter.cpp @@ -6,13 +6,15 @@ /* By: rparodi +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/03/20 16:41:16 by rparodi #+# #+# */ -/* Updated: 2025/03/21 15:49:00 by rparodi ### ########.fr */ +/* Updated: 2025/03/23 15:01:09 by rparodi ### ########.fr */ /* */ /* ************************************************************************** */ #include "ScalarConverter.hpp" #include #include +#include +#include #include #include @@ -35,55 +37,20 @@ ScalarConverter& ScalarConverter::operator = (ScalarConverter const &assign) { return *this; } -bool isChar(std::string *input) { - if (input->length() == 1 && std::isprint(input->at(0))) - return true; - if (input->length() == 1 && std::isprint(input->at(0))) { - std::cerr << "Please note that non-displayable characters shouldn’t be used as inputs." << std::endl; - return false; - } - return false; -} - -bool isInt(std::string *input) { - for (size_t i = 0; i < input->length(); i++) { - if (!std::isdigit(input->at(i))) { - return false; - } - } - std::ostringstream oss; - try { - oss << std::stoi(*input); - } catch (std::exception &e) { - return false; - } - return true; -} - -bool isFloat(std::string *input) { - std::ostringstream oss; - try { - oss << std::stof(*input); - } catch (std::exception &e) { - return false; - } - return true; -} - -bool isDouble(std::string *input) { - std::ostringstream oss; - try { - oss << std::stod(*input); - } catch (std::exception &e) { - return false; - } - return true; -} - void ScalarConverter::convert(std::string *input) { - std::cout << "Input:\t\t" << *input << std::endl; - std::cout << "IsChar:\t\t" << (isChar(input) ? "✅ | true" : "❌ | false") << std::endl; - std::cout << "IsInt:\t\t" << (isInt(input) ? "✅ | true" : "❌ | false") << std::endl; - std::cout << "IsFloat:\t" << (isFloat(input) ? "✅ | true" : "❌ | false") << std::endl; - std::cout << "IsDouble:\t" << (isDouble(input) ? "✅ | true" : "❌ | false") << std::endl; + // std::cout << "Input:\t\t" << *input << std::endl; + if (isChar(input->c_str())) + convertChar(*input); + else if (isInt(input->c_str())) + convertInt(*input); + // else if (isFloat(input)) + // convertFloat(*input); + // else if (isDouble(input)) + // convertDouble(*input); + // else + // std::cout << "Error: Invalid input" << std::endl; + // std::cout << "IsChar:\t\t" << (isChar(input->c_str()) ? "✅ | true" : "❌ | false") << std::endl; + // std::cout << "IsInt:\t\t" << (isInt(input->c_str()) ? "✅ | true" : "❌ | false") << std::endl; + // std::cout << "IsFloat:\t" << (isFloat(input) ? "✅ | true" : "❌ | false") << std::endl; + // std::cout << "IsDouble:\t" << (isDouble(input) ? "✅ | true" : "❌ | false") << std::endl; }