क्या मैं 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 सिस्टम कॉल पर प्रत्यय. कंपाइलर आपकी प्रोजेक्ट सेटिंग्स के आधार पर सही संस्करण का चयन करेगा। यदि आपको मिश्रित वर्ण सेट का उपयोग करना है तो आप इसका उपयोग कर सकते हैं वाइडचार्टोमल्टीबाइट फ़ंक्शन (स्ट्रिंगपिसेट.एच) – Win32 ऐप्स | माइक्रोसॉफ्ट लर्न[^] रूपान्तरण करने के लिए UNICODE को ASCII.

コメント

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