clang-tidy-21: fix cppcoreguidelines-pro-bounds-pointer-arithmetic

Fix various pro-bounds-pointer-arithmetic warnings that started being
reported with clang-tidy-21.

```
error: do not use pointer arithmetic [cppcoreguidelines-pro-bounds-pointer-arithmetic,-warnings-as-errors]
```

Forked this change from [1]

References:
[1] https://gerrit.openbmc.org/c/openbmc/entity-manager/+/84049

Tested: Inspection only.

Change-Id: I535802825e68d7f5fe01ed2428d127f7a18ab4f8
Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>
diff --git a/src/utils.hpp b/src/utils.hpp
index 123a316..3a3a083 100644
--- a/src/utils.hpp
+++ b/src/utils.hpp
@@ -8,6 +8,7 @@
 #include <sdbusplus/asio/connection.hpp>
 #include <sdbusplus/exception.hpp>
 
+#include <charconv>
 #include <filesystem>
 
 using DBusValueVariant =
@@ -73,3 +74,15 @@
 /// \param dbusValue the property value being matched to a probe.
 /// \return true if the dbusValue matched the probe otherwise false.
 bool matchProbe(const nlohmann::json& probe, const DBusValueVariant& dbusValue);
+
+template <typename T>
+std::from_chars_result fromCharsWrapper(const std::string_view& str, T& out,
+                                        bool& fullMatch, int base = 10)
+{
+    auto result = std::from_chars(
+        str.data(), std::next(str.begin(), str.size()), out, base);
+
+    fullMatch = result.ptr == std::next(str.begin(), str.size());
+
+    return result;
+}