Add string_view::from_zstr

This commit is contained in:
2025-02-03 23:46:25 +01:00
parent a89e72929e
commit f2b1af8d3f
2 changed files with 23 additions and 0 deletions

View File

@ -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;

View File

@ -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";