Skip to content

replaceInPlace std::wstring #4713

@micheleselea

Description

@micheleselea

It's not possible to use this

std::wstring wstr;
Poco::replaceInPlace(wstr, L"STRINGB", L"STRINGA");

due to a compile error in this line typename S::size_type fromLen = std::strlen(from); of String.h

template <class S>
S& replaceInPlace(S& str, const typename S::value_type* from, const typename S::value_type* to, typename S::size_type start = 0)
{
	poco_assert (*from);

	S result;
	typename S::size_type pos = 0;
	typename S::size_type fromLen = std::strlen(from); //**HERE**
	result.append(str, 0, start);
	do
	{
		pos = str.find(from, start);
		if (pos != S::npos)
		{
			result.append(str, start, pos - start);
			result.append(to);
			start = pos + fromLen;
		}
		else result.append(str, start, str.size() - start);
	}
	while (pos != S::npos);
	str.swap(result);
	return str;
}

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

Status

Done

Relationships

None yet

Development

No branches or pull requests

Issue actions