const pstring_t<F> pstring_t<F>::rtrim(const pstring_t ws) const { auto f = find_last_not_of(ws); if (f==end()) return pstring_t(""); else return substr(begin(), f + 1); }
const pstring_t<F> pstring_t<F>::rpad(const pstring_t &ws, const unsigned cnt) const { // FIXME: pstringbuffer ret(*this); pstring_t ret(*this); while (ret.len() < cnt) ret += ws; return pstring_t(ret).substr(0, cnt); }
typename pstring_t<F>::iterator pstring_t<F>::find(const code_t search, iterator start) const { mem_t buf[traits::MAXCODELEN+1] = { 0 }; traits::encode(search, buf); return find(pstring_t(&buf[0], UTF8), start); }