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
}