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