From f2b1af8d3f23ff47b343cef8feef6e25ff5377e4 Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Mon, 3 Feb 2025 23:46:25 +0100 Subject: Add string_view::from_zstr --- asl/string_view.hpp | 5 +++++ asl/tests/string_view_tests.cpp | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/asl/string_view.hpp b/asl/string_view.hpp index 6c4d867..c869092 100644 --- a/asl/string_view.hpp +++ b/asl/string_view.hpp @@ -32,6 +32,11 @@ public: ASL_ASSERT(m_data[kSize - 1] == '\0'); // NOLINT(*-pointer-arithmetic) } + static constexpr string_view from_zstr(const char* str) + { + return string_view(str, asl::strlen(str)); + } + constexpr string_view(const string_view&) = default; constexpr string_view(string_view&&) = default; diff --git a/asl/tests/string_view_tests.cpp b/asl/tests/string_view_tests.cpp index 798acb5..7175661 100644 --- a/asl/tests/string_view_tests.cpp +++ b/asl/tests/string_view_tests.cpp @@ -23,6 +23,24 @@ ASL_TEST(from_literal) ASL_TEST_EXPECT(s2.is_empty()); } +ASL_TEST(from_zstr) +{ + const char* s1 = ""; + const char* s2 = "abc"; + const char* s3 = "abc\0def"; + + auto sv1 = asl::string_view::from_zstr(s1); + auto sv2 = asl::string_view::from_zstr(s2); + auto sv3 = asl::string_view::from_zstr(s3); + + ASL_TEST_ASSERT(sv1.size() == 0); + ASL_TEST_ASSERT(sv2.size() == 3); + ASL_TEST_ASSERT(sv3.size() == 3); + + ASL_TEST_ASSERT(sv2 == "abc"_sv); + ASL_TEST_ASSERT(sv3 == "abc"_sv); +} + ASL_TEST(substr1) { asl::string_view s1 = "abcd"; -- cgit