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; } }