summaryrefslogtreecommitdiff
path: root/Source/Core/Common/StringUtil.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/Common/StringUtil.h')
-rw-r--r--Source/Core/Common/StringUtil.h21
1 files changed, 19 insertions, 2 deletions
diff --git a/Source/Core/Common/StringUtil.h b/Source/Core/Common/StringUtil.h
index 262af614b7..f45f437b87 100644
--- a/Source/Core/Common/StringUtil.h
+++ b/Source/Core/Common/StringUtil.h
@@ -3,6 +3,7 @@
#pragma once
+#include <charconv>
#include <cstdarg>
#include <cstddef>
#include <cstdlib>
@@ -147,8 +148,24 @@ std::string ValueToString(T value)
// Generates an hexdump-like representation of a binary data blob.
std::string HexDump(const u8* data, size_t size);
-// TODO: kill this
-bool AsciiToHex(const std::string& _szValue, u32& result);
+namespace Common
+{
+template <typename T, typename std::enable_if_t<std::is_integral_v<T>>* = nullptr>
+std::from_chars_result FromChars(std::string_view sv, T& value, int base = 10)
+{
+ const char* const first = sv.data();
+ const char* const last = first + sv.size();
+ return std::from_chars(first, last, value, base);
+}
+template <typename T, typename std::enable_if_t<std::is_floating_point_v<T>>* = nullptr>
+std::from_chars_result FromChars(std::string_view sv, T& value,
+ std::chars_format fmt = std::chars_format::general)
+{
+ const char* const first = sv.data();
+ const char* const last = first + sv.size();
+ return std::from_chars(first, last, value, fmt);
+}
+}; // namespace Common
std::string TabsToSpaces(int tab_size, std::string str);