Bisakah saya mengkonversi dari LPCWSTR ke LPCSTR

pemrograman


Saya harus mengkonversi dari LPCWSTR ke LPCSTR.
Saya memerlukannya untuk kode ini:

WFilePath                       path;
WIN32_FIND_DATAA                 fd;
HANDLE                          h;

	h = FindFirstFileA(path.GetString(), &fd); 

Apa yang saya coba:

Saya mencoba mencari di internet tetapi saya tidak menemukannya

Solusi 1

Sesuatu seperti ini mungkin?

C++
#include <string>

LPCSTR ToLPCSTR(LPCWSTR wstr) {
  std::wstring ws(wstr);
  return ws.c_str();
}

Perlu diketahui bahwa tidak mungkin mengonversi setiap karakter string lebar menjadi CStr, sehingga Anda mungkin akan kehilangan data.

Solusi 2

Gunakan semuanya UNICODE atau semua ASCII, untuk menghindari masalah seperti itu. Dan Anda bisa menelepon FindFirstFileW yang mana UNICODE versi, untuk membuatnya lebih sederhana. Biasanya lebih baik tidak menggunakan A atau W akhiran pada panggilan sistem. Kompiler akan memilih versi yang benar berdasarkan pengaturan proyek Anda. Jika Anda harus menggunakan kumpulan karakter campuran maka Anda dapat menggunakan Fungsi WideCharToMultiByte (stringapiset.h) – Aplikasi Win32 | Microsoft Belajar[^] untuk mengubah UNICODE ke ASCII.

コメント

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