हमें एक प्रारूप _TCHAR * स्ट्रिंग, और चर के चार स्ट्रिंग्स को चर-लंबाई वाले तर्कों के साथ एक फ़ंक्शन में पास करने की आवश्यकता है:C++ चर-लंबाई तर्क का उपयोग करते समय मैं _TCHAR * से char * में कैसे परिवर्तित करूं?
inline void FooBar(const _TCHAR *szFmt, const char *cArgs, ...) {
//...
}
तो इसे ऐसा कहा जा सकता है:
char *foo = "foo";
char *bar = "bar";
LogToFileA(_T("Test %s %s"), foo, bar);
जाहिर है एक साधारण फिक्स का उपयोग char के बजाय _TCHAR का उपयोग करना होगा, लेकिन हमारे पास दुर्भाग्य से उस लक्जरी नहीं है।
हमें va_start, आदि के साथ इसका उपयोग करने की आवश्यकता है ताकि हम एक स्ट्रिंग को प्रारूपित कर सकें:
va_list args;
_TCHAR szBuf[BUFFER_MED_SIZE];
va_start(args, cArgs);
_vstprintf_s(szBuf, BUFFER_MED_SIZE, szFmt, args);
va_end(args);
दुर्भाग्यवश हम इसका उपयोग नहीं कर सकते क्योंकि यह हमें यह त्रुटि देता है:
Unhandled exception at 0x6a0d7f4f (msvcr90d.dll) in foobar.exe:
0xC0000005: Access violation reading location 0x2d86fead.
मैं सोच रहा हूं हमें अपने char * को _TCHAR * में परिवर्तित करने की आवश्यकता है - लेकिन कैसे?
यदि आप एक wchar * एक चार * के बजाय का उपयोग कर के लक्जरी है, मैं यह है कि आप समस्या –
हम्म, दुर्भाग्य से नहीं तय होगा लगता है - वर्तमान प्रणाली चार * और _TCHAR * –
की एक mish मैश है यह बहुत बुरा है ... दक्षता एक मुद्दा है? यदि नहीं, तो मेरे उत्तर पर एक नज़र डालें, यह मेरे लिए काम करता है –