Beispiel #1
0
const pstring_t<F> pstring_t<F>::rpad(const pstring_t &ws, const size_type cnt) const
{
	// FIXME: pstringbuffer ret(*this);

	pstring_t ret(*this);
	size_type wsl = ws.len();
	for (auto i = ret.len(); i < cnt; i+=wsl)
		ret += ws;
	return ret;
}
Beispiel #2
0
pstring_t<F> pstring_t<F>::replace(const pstring_t &search, const pstring_t &replace) const
{
	pstring_t ret("");
	const size_type slen = search.len();

	auto last_s = begin();
	auto s = find(search, last_s);
	while (s != end())
	{
		ret += substr(last_s, s);
		ret += replace;
		last_s = s + slen;
		s = find(search, last_s);
	}
	ret += substr(last_s, end());
	return ret;
}
Beispiel #3
0
int pstring_t<F>::find_first_not_of(const pstring_t &no) const
{
	char *t = m_ptr->str();
	unsigned nolen = no.len();
	unsigned tlen = len();
	for (unsigned i=0; i < tlen; i++)
	{
		char *n = no.m_ptr->str();
		bool f = true;
		for (unsigned j=0; j < nolen; j++)
		{
			if (F::code(t) == F::code(n))
				f = false;
			n += F::codelen(t);
		}
		if (f)
			return i;
		t += F::codelen(t);
	}
	return -1;
}