UTF8iterator UTF8string::utf8_erase( const UTF8iterator& position ) { if ( position == utf8_end() ) return utf8_end(); if ( position == utf8_end() - 1 ) { utf8_pop(); return utf8_end(); } const size_t d = static_cast<size_t>( position - utf8_begin() ); utf8_erase( d, 1U ); return utf8_begin() + d; }
UTF8iterator UTF8string::utf8_erase( const UTF8iterator& first, const UTF8iterator& last ) { if ( first == last ) return utf8_end(); if ( first == utf8_begin() && last == utf8_end() ) { utf8_clear(); return utf8_end(); } const UTF8iterator& REAL_FIRST = first < last ? first : last; const UTF8iterator& REAL_LAST = first < last ? last : first; const size_t INDEX = static_cast<size_t>( REAL_FIRST - utf8_begin() ); const size_t COUNT = static_cast<size_t>( REAL_LAST - REAL_FIRST ); utf8_erase( INDEX, COUNT ); return utf8_begin() + INDEX; }
inline size_type length (void) const { return (distance (utf8_begin(), utf8_end())); }
UTF8iterator UTF8string::end() const noexcept { return utf8_begin() + _utf8length; }
UTF8iterator UTF8string::begin() const noexcept { return utf8_begin(); }