Я хочу преобразовать строку из char*
в wchar_t*
, но эта строка, например, на любом языке, кроме английского sh (русский, китайский, арабский c и др. c). Я попытался сделать это следующим образом:
// This is just an example of conversion
const wchar_t * ToWide(const char* mbStr) {
const size_t cSize = mbstowcs(NULL, mbStr, 0) + 1;
wchar_t* wc = new wchar_t[cSize];
mbstowcs(wc, mbStr, cSize);
return wc;
}
int main() {
// just the first one is the only that works fine
wcout << ToWide("Hello"); // (English) The result: Hello
wcout << ToWide("Привет"); // (Russian) The result: ???????
wcout << ToWide("你好"); // (Chinese) The result: ??
wcout << ToWide("مرحبا"); // (Arabic) The result: ع╤═╚╟
}
Почему это произошло и как это можно решить или как правильно преобразовать char * в wchar_t *?