Тип wchar_t, содержащийся внутри wstring, является целочисленным типом, поэтому вы можете использовать его напрямую:
for (wchar_t c = 0x4ff0; c <= 0x5ff0; ++c) {
std::wstring str(1, c);
// do something with str
}
Будьте осторожны, пытаясь сделать это с символами выше 0xffff, поскольку в зависимости от платформы (например, Windows) они не поместятся в wchar_t.
Если, например, вы хотите увидеть блок смайликов в строке, вы можете создать суррогатные пары:
std::wstring str;
for (int c = 0x1f600; c <= 0x1f64f; ++c) {
if (c <= 0xffff || sizeof(wchar_t) > 2)
str.append(1, (wchar_t)c);
else {
str.append(1, (wchar_t)(0xd800 | ((c - 0x10000) >> 10)));
str.append(1, (wchar_t)(0xdc00 | ((c - 0x10000) & 0x3ff)));
}
}