[ad_1]
Tôi phải chuyển đổi từ LPCWSTR sang LPCSTR.
Tôi cần nó cho mã này:
WFilePath path; WIN32_FIND_DATAA fd; HANDLE h; h = FindFirstFileA(path.GetString(), &fd);
Những gì tôi đã thử:
Tôi đã cố gắng tìm kiếm trên internet nhưng tôi không tìm thấy
Giải pháp 1
Một cái gì đó như thế này có lẽ?
#include <string> LPCSTR ToLPCSTR(LPCWSTR wstr) { std::wstring ws(wstr); return ws.c_str(); }
Xin lưu ý rằng không thể chuyển đổi mọi ký tự chuỗi rộng thành CStr, do đó bạn có thể bị mất dữ liệu.
Giải pháp 2
Hoặc sử dụng tất cả UNICODE
hoặc tất cả ASCII
, để tránh những vấn đề như vậy. Và bạn có thể gọi FindFirstFileW
đó là UNICODE
phiên bản để làm cho nó đơn giản hơn. Nói chung tốt hơn là không nên sử dụng A
hoặc W
hậu tố trong các cuộc gọi hệ thống. Trình biên dịch sẽ chọn phiên bản chính xác dựa trên cài đặt dự án của bạn. Nếu bạn phải sử dụng bộ ký tự hỗn hợp thì bạn có thể sử dụng Hàm WideCharToMultiByte (stringapiset.h) – Ứng dụng Win32 | Microsoft Tìm hiểu[^] để chuyển đổi UNICODE
ĐẾN ASCII
.
[ad_2]
コメント