static void AssignStr(cString &dest, const char *start, const char *end, _locale_t locale)
{
	dest.clear();
	dest.reserve(end - start); // assume most characters are 1-byte

	const char *p = start;
	while (p < end)
	{
		wchar_t wc;
		int len = _mbtowc_l(&wc, p, end - p, locale);
		if (len < 1)
			break;

		dest.push_back(wc);
		p += len;
	}
}