2015-04-24 13 views
8

che ho provato convertire un char * a wchar_t *, ma sto avendo qualche problema con i mbstowcs e Visual Studio vuole mbstowcs_s ...Converti char * a * wchar_t utilizzando mbstowcs_s

char *port; 
size_t size = strlen(port) + 1; 
wchar_t* portName = new wchar_t[size]; 
mbstowcs(portName, port, size); 

Come può Cambio la funzione in mbstowcs_s?

+0

E qual è il problema che stai avendo? Hai controllato il [riferimento MSDN su 'mbstowcs_s'] (https://msdn.microsoft.com/en-us/library/eyktyxsx.aspx)? –

+1

Cosa ne pensi di disabilitare C4996? – willll

+1

La sicurezza dell'applicazione trarrà molto più vantaggio da 'std :: string' e' std :: wstring' che da 'mbstowcs_s'. –

risposta

19

io non consiglierei disabilitando le avvertenze codice di sicurezza quando la correzione a utilizzare i metodi sicuri è così facile, così qui si va:

const char *port="8080"; 
    size_t size = strlen(port) + 1; 
    wchar_t* portName = new wchar_t[size]; 

    size_t outSize; 
    mbstowcs_s(&outSize, portName, size, port, size-1); 

    std::wcout << portName << std::endl; 

Testato con cl /W3 /EHsc su VS2013.