Tôi có thể chuyển đổi từ LPCWSTR sang LPCSTR không

lập trình


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ẽ?

C++
#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.

コメント

タイトルとURLをコピーしました