2014-12-31 19 views
11

Hãy giúp tôi làm cách nào tôi có thể chuyển đổi wchar_t * var thành chuỗi varStr trong bảng điều khiển win32. Cảm ơn trướcChuyển đổi wchar_t * thành chuỗi

+0

http://stackoverflow.com/questions/4339960/how-do-i-convert-wchar-t-to-stdstring –

+0

hiển thị mã của bạn, vui lòng (API Win32) chức năng – grisha

Trả lời

35

Sử dụng wstring, xem mã này:

// Your wchar_t* 
wchar_t* txt = L"Hello World"; 
wstring ws(txt); 
// your new String 
string str(ws.begin(), ws.end()); 
// Show String 
cout << str << endl; 
+0

Completelly sai. Điều này không thành công nếu 'txt' chứa bất kỳ ký tự không phải ascii nào. Nếu bạn thay thế '" Hello World "' bằng '" ... "', thì '…' trở thành '&'. Giải pháp * này rất có hại, gây mất dữ liệu. – Benio

4

Bạn nên sử dụng lớp wstring thuộc std namespace. Nó có một hàm tạo chấp nhận một tham số của kiểu wchar_t *.

Dưới đây là ví dụ đầy đủ về việc sử dụng lớp này.

wchar_t* characters=L"Test"; 
std::wstring string(characters); 

Bạn không cần phải sử dụng một constructor chứa String.begin() và String.end() bởi vì các nhà xây dựng của std :: wstring tự động phân bổ bộ nhớ để lưu trữ mảng wchar_t và bản sao mảng đến bộ nhớ được cấp phát.

+0

Có thể downvoter vui lòng giải thích downvote của nó? –

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