Dovrei trasformare un char* in un wchar_t* in c++.
Il tutto sembra funzionare, ma non sono certo che sia il modo migliore (soprattutto su come ritorno il risultato e sull'uso dei puntatori).
Qualcuno può consigliarmi?
codice:
wchar_t* MultibyteToUnicode(char* multibyte)
{
size_t sl = strlen(multibyte); // Ottengo lunghezza della stringa multibyte
if(sl < 0) return NULL; // Se la lungheza della stringa è < 0 ritorno NULL
size_t wsl = mbstowcs(NULL,multibyte, sl + 1); //memoria necessaria
if(wsl == -1) return NULL; // Se mbstowcs fallisce ritorno NULL
wchar_t* unicode = new wchar_t[wsl + 1];
size_t wsl2 = mbstowcs(unicode,multibyte, sl + 1); // Effettuo la conversione
if(wsl2 == -1) return NULL; // Se la conversione fallisce ritorno NULL
return unicode; // Restituisco la stringa unicode
}