هل يمكنني التحويل من LPCWSTR إلى LPCSTR


لا بد لي من التحويل من LPCWSTR إلى LPCSTR.
أحتاجه لهذا الكود:

WFilePath                       path;
WIN32_FIND_DATAA                 fd;
HANDLE                          h;

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

ما حاولت:

حاولت البحث في النت لكن لم أجد

الحل 1

شيء من هذا القبيل ربما؟

سي ++
#include <string>

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

انتبه إلى أنه ليس من الممكن تحويل كل حرف واسع النطاق إلى CStr، لذلك قد ينتهي بك الأمر إلى فقدان البيانات.

الحل 2

إما استخدام الكل UNICODE أو الكل ASCII، لتجنب مثل هذه القضايا. ويمكنك الاتصال FindFirstFileW وهو UNICODE النسخة، لتسهيل الأمر. ومن الأفضل عمومًا عدم استخدام A أو W اللواحق على مكالمات النظام. سيختار المترجم الإصدار الصحيح بناءً على إعدادات مشروعك. إذا كان يجب عليك استخدام مجموعات أحرف مختلطة، فيمكنك استخدام وظيفة WideCharToMultiByte (stringapiset.h) – تطبيقات Win32 | مايكروسوفت تعلم[^] لتحويل UNICODE ل ASCII.

コメント

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