Implement string::copy and string_view::copy
This commit is contained in:
parent
674371a66d
commit
cb4f9d2861
@ -151,7 +151,14 @@ public:
|
||||
template <typename T>
|
||||
istring& replace(const_iterator first, const_iterator last, T first2, T last2);
|
||||
|
||||
size_t copy(char* dest, size_t count, size_t pos = 0) const;
|
||||
/**
|
||||
* \brief Copy the string to a buffer
|
||||
*
|
||||
* Copies the string to the buffer pointed to by dest. Will always
|
||||
* copy the string from front to back, never in reverse. The strings
|
||||
* must not overlap.
|
||||
*/
|
||||
size_t copy(char* dest, size_t count = npos, size_t pos = 0) const;
|
||||
|
||||
void resize(size_t count);
|
||||
void resize(size_t count, char ch);
|
||||
|
||||
@ -56,7 +56,14 @@ public:
|
||||
constexpr size_t size() const { return m_size; }
|
||||
constexpr size_t length() const { return m_size; }
|
||||
|
||||
size_t copy(char* dest, size_t count, size_t pos = 0) const;
|
||||
/**
|
||||
* \brief Copy the string to a buffer
|
||||
*
|
||||
* Copies the string to the buffer pointed to by dest. Will always
|
||||
* copy the string from front to back, never in reverse. The strings
|
||||
* must not overlap.
|
||||
*/
|
||||
size_t copy(char* dest, size_t count = npos, size_t pos = 0) const;
|
||||
|
||||
// Search
|
||||
|
||||
|
||||
@ -213,6 +213,11 @@ istring& istring::insert(size_t index, const istring& str) {
|
||||
return *this;
|
||||
}
|
||||
|
||||
size_t istring::copy(char* dest, size_t count, size_t pos) const {
|
||||
mtl_hybridcpy(dest, m_str + pos, count);
|
||||
return count;
|
||||
}
|
||||
|
||||
string_ext::string_ext(char* buf, size_t buf_size) : istring(buf, buf_size - 1, 0) {}
|
||||
|
||||
|
||||
|
||||
@ -9,4 +9,13 @@ string_view::string_view(const istring& str)
|
||||
string_view::string_view(const istring& str, size_t size)
|
||||
: m_str(str.c_str()), m_size(size) {}
|
||||
|
||||
size_t string_view::copy(char* dest, size_t count, size_t pos) const {
|
||||
if (count == npos) {
|
||||
count = m_size - pos;
|
||||
}
|
||||
|
||||
mtl_hybridcpy(dest, m_str + pos, count);
|
||||
return count;
|
||||
}
|
||||
|
||||
} // namespace mtl
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user