From 3a2acae093206efb84519e30deddb342f5cdefb5 Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Sun, 18 Jul 2021 13:06:52 -0500 Subject: [PATCH] [ox/std] Add BasicString::substr(begin, end) --- deps/ox/src/ox/std/string.hpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/deps/ox/src/ox/std/string.hpp b/deps/ox/src/ox/std/string.hpp index 4dcc517e..951f4b6d 100644 --- a/deps/ox/src/ox/std/string.hpp +++ b/deps/ox/src/ox/std/string.hpp @@ -103,6 +103,9 @@ class BasicString { [[nodiscard]] BasicString substr(std::size_t pos) const noexcept; + [[nodiscard]] + BasicString substr(std::size_t begin, std::size_t end) const noexcept; + [[nodiscard]] bool endsWith(const char *ending) const noexcept; @@ -362,6 +365,17 @@ BasicString BasicString::substr(std::size_t po return m_buff.data() + pos; } +template +BasicString BasicString::substr(std::size_t begin, std::size_t end) const noexcept { + const auto src = m_buff.data() + begin; + const auto size = end - begin; + BasicString out(size); + const auto buff = out.data(); + memcpy(buff, src, size); + buff[size] = 0; + return move(out); +} + template bool BasicString::endsWith(const char *ending) const noexcept { const auto endingLen = ox_strlen(ending);