From a2d35ba747663cb8ca6097249dc7daa2237a467e Mon Sep 17 00:00:00 2001 From: Jie Date: Mon, 6 Jan 2025 14:11:58 +0800 Subject: [PATCH] use to_string to replace itos --- include/toolkit.h | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/include/toolkit.h b/include/toolkit.h index 7c9a9e6..a624599 100644 --- a/include/toolkit.h +++ b/include/toolkit.h @@ -5,32 +5,44 @@ #include #include #include +#include +#include //use for to_chars constexpr size_t buffer_size = 32; +template +concept _num_type = requires { + std::is_same_v || + std::is_same_v || + std::is_same_v || + std::is_same_v; +}; + namespace toolkit{ - //number to std::string; template - std::expected itos(T value){ - char buffer[buffer_size]; - auto res = std::to_chars(buffer, buffer+buffer_size, value); - if(res.ec != std::errc()){ - return std::unexpected(std::make_error_code(res.ec).message()); + std::expected to_string(T value){ + if constexpr (std::is_same_v || std::is_same_v || std::is_same_v){ + char buffer[buffer_size]; + auto res = std::to_chars(buffer, buffer + buffer_size, value); + if (res.ec != std::errc()) { + return std::unexpected(std::make_error_code(res.ec).message()); + } + return std::string(buffer, res.ptr - buffer); + } else if constexpr (std::is_same_v::type, + char *>) { + return std::to_string(value); } - return std::string(buffer, res.ptr - buffer); } - + template// requires std::is_same_v std::expected stoi(const std::string& str){ T value; - auto res = std::from_chars(str.c_str(), str.c_str() + str.size(), value); if(res.ec != std::errc()){ return std::unexpected(std::make_error_code(res.ec).message()); } return value; - } }