add std::string to number funtion

This commit is contained in:
Jie 2025-01-04 12:42:03 +08:00
parent 012d44d958
commit bac6287497
3 changed files with 18 additions and 4 deletions

View File

@ -3,6 +3,8 @@
#include <charconv> #include <charconv>
#include <expected> #include <expected>
#include <type_traits>
#include <string_view>
//use for to_chars //use for to_chars
constexpr size_t buffer_size = 32; constexpr size_t buffer_size = 32;
@ -18,6 +20,18 @@ namespace toolkit{
} }
return std::string(buffer, res.ptr - buffer); return std::string(buffer, res.ptr - buffer);
} }
template<typename T = double>// requires std::is_same_v<T, std::string>
std::expected<T, std::string> 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;
}
} }
#endif #endif

View File

@ -4,8 +4,8 @@ using namespace std;
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
double num = .2; std::string num = "2";
auto str = toolkit::itos(num); auto str = toolkit::stoi(num);
cout<<str.value()<<"\n"; cout<<*str<<"\n";
return 0; return 0;
} }

View File

@ -1,4 +1,4 @@
set_languages("C++23") set_languages("c++23")
add_includedirs("include/") add_includedirs("include/")
add_rules("mode.debug", "mode.release") add_rules("mode.debug", "mode.release")