diff options
author | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2025-02-03 23:46:25 +0100 |
---|---|---|
committer | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2025-02-03 23:46:25 +0100 |
commit | f2b1af8d3f23ff47b343cef8feef6e25ff5377e4 (patch) | |
tree | 505cca49e57a98d57d6768ed36992e1f1dd11a53 | |
parent | a89e72929ed047344e221f65542e763e3f6ac3de (diff) |
Add string_view::from_zstr
-rw-r--r-- | asl/string_view.hpp | 5 | ||||
-rw-r--r-- | asl/tests/string_view_tests.cpp | 18 |
2 files changed, 23 insertions, 0 deletions
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"; |