2015-04-24 12 views
8

Tôi đã thử chuyển đổi một char * để wchar_t *, nhưng tôi đang gặp một số vấn đề khi dùng các mbstowcs và Visual Studio muốn mbstowcs_s ...Chuyển đổi char * để wchar_t * sử dụng mbstowcs_s

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

thế nào có thể Tôi thay đổi chức năng để mbstowcs_s?

+0

Và sự cố bạn đang gặp phải là gì? Bạn đã kiểm tra [tham chiếu MSDN trên 'mbstowcs_s'] (https://msdn.microsoft.com/en-us/library/eyktyxsx.aspx) chưa? –

+1

Điều gì về việc tắt C4996? – willll

+1

Bảo mật ứng dụng của bạn sẽ được hưởng lợi nhiều hơn từ 'std :: string' và' std :: wstring' hơn từ 'mbstowcs_s'. –

Trả lời

19

tôi sẽ không khuyên bạn nên vô hiệu hóa các cảnh báo mã an toàn khi sửa chữa để sử dụng những phương pháp an toàn là dễ dàng như vậy, vì vậy ở đây bạn đi:

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; 

Thử nghiệm với cl /W3 /EHsc trên VS2013.

Các vấn đề liên quan