diff --git a/apphandler.cpp b/apphandler.cpp
index 489ebd8..f760dbf 100644
--- a/apphandler.cpp
+++ b/apphandler.cpp
@@ -520,9 +520,10 @@
 
         // convert major
         {
-            std::string_view str = m[matches[0]].str();
-            auto [ptr, ec]{std::from_chars(str.begin(), str.end(), val)};
-            if (ec != std::errc() || ptr != str.begin() + str.size())
+            std::string str = m[matches[0]].str();
+            const auto& [ptr, ec] =
+                std::from_chars(str.data(), str.data() + str.size(), val);
+            if (ec != std::errc() || ptr != str.data() + str.size())
             { // failed to convert major string
                 return -1;
             }
@@ -542,9 +543,10 @@
 
         // convert minor
         {
-            std::string_view str = m[matches[1]].str();
-            auto [ptr, ec]{std::from_chars(str.begin(), str.end(), val)};
-            if (ec != std::errc() || ptr != str.begin() + str.size())
+            std::string str = m[matches[1]].str();
+            const auto& [ptr, ec] =
+                std::from_chars(str.data(), str.data() + str.size(), val);
+            if (ec != std::errc() || ptr != str.data() + str.size())
             { // failed to convert minor string
                 return -1;
             }
@@ -561,10 +563,11 @@
                     continue;
                 }
 
-                std::string_view str = m[matches[i + 2]].str();
+                std::string str = m[matches[i + 2]].str();
+                const char* cstr = str.c_str();
                 auto [ptr,
-                      ec]{std::from_chars(str.begin(), str.end(), val, 16)};
-                if (ec != std::errc() || ptr != str.begin() + str.size())
+                      ec] = std::from_chars(cstr, cstr + str.size(), val, 16);
+                if (ec != std::errc() || ptr != cstr + str.size())
                 { // failed to convert aux byte string
                     break;
                 }
