Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C++] uso dei puntatori in funzioni

    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
    }

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Rimane allocata unicode in caso la seconda chiamata a mbstowcs fallisca.
    Per il resto mi sembra tutto a posto (anche se io avrei usato le std::string per le conversioni).
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    Ti ringrazio

    Sul libro che sto provando a seguire,se ho capito bene, c'è scritto che non si dovrebbe ritornare un puntatore ad una variabile locale perché ptrebbe dare problemi.

    Il modo in cui ho fatto io ritorna un puntatore a una variabile locale.
    Da qui il dubbio sulla correttezza del codice.

  4. #4
    Originariamente inviato da pavimento
    Ti ringrazio

    Sul libro che sto provando a seguire,se ho capito bene, c'è scritto che non si dovrebbe ritornare un puntatore ad una variabile locale perché ptrebbe dare problemi.

    Il modo in cui ho fatto io ritorna un puntatore a una variabile locale.
    Da qui il dubbio sulla correttezza del codice.
    in unicode NON c'e' l'indirizo di una variabile locale, ma l'indirizzo di una variabile allocata con new [] (e sara' cura del chiamante liberarla con delete []).

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.