2012-03-02 14 views
5

मैं विजुअल सी ++ 2010 में केवल मानक लाइब्रेरी का उपयोग करके यूओटीएफ -8 टेक्स्ट फ़ाइल पढ़ने की कोशिश कर रहा हूं, बूस्ट या विंडोज एपीआई नहीं। मैं के रूप में स्थान निर्धारित किए हैं:विजुअल सी ++ 2010 में यूटीएफ -8 लोकेल

std::locale utf8_locale(std::locale(), new std::codecvt_utf8<wchar_t>); 

लेकिन यह निम्न संकलक त्रुटि में परिणाम है:

error C2661: 'std::locale::facet::operator new' : no overloaded function takes 3 arguments 
error C2664: 'std::locale::locale(const char *,std::locale::category)' : cannot convert parameter 1 from 'std::locale' to 'const char *' 
+4

के बजाय संकलन त्रुटि प्राप्त करने के लिए आपको अपना कोड ठीक करना होगा। –

+0

हमें कंपाइलर त्रुटि और थोड़ा और कोड दिखाएं। – Kieveli

+0

मैंने प्रश्न – AMCoded

उत्तर

5

त्रुटि डिबग मोड में occures है जब कोड फ़ाइल में प्रयोग किया जाता है कि विजुअल C++ के नीचे प्रदान की Micrsoft मैक्रो रखा गया है।

#ifdef _DEBUG 
#define new DEBUG_NEW 
#endif 

इस त्रुटि #define new DEBUG_NEW से छुटकारा पाने के बाहर टिप्पणी की जानी चाहिए या कोड जो ऊपर मैक्रो नहीं है एक और फ़ाइल में लागू किया जाना चाहिए। विजुअल C++ के लिए 2010 इस बग यहाँ बताया गया है http://connect.microsoft.com/VisualStudio/feedback/details/683483/mfc-c-fails-to-compile-use-of-codecvt-utf8-in-debug-configuration

+0

यह एमएफसी के लिए केवल एक समस्या है। जब तक आप एमएफसी का उपयोग नहीं कर रहे हैं, एमएफसी पुस्तकालयों से लिंक न करें। और हाँ, यह केवल एमएफसी पुस्तकालयों के डीबग संस्करण के लिए परिभाषित किया गया है। –

+0

एफडब्ल्यूआईडब्ल्यू और आईआईआरसी, सी ++ में एक आरक्षित शब्द, जैसे कि 'नया' के नाम से मैक्रो को परिभाषित करना अवैध है। तो यह कोड एमएफसी द्वारा सी ++ का एक और दुरुपयोग है। – rodrigo

3

FYI करें, एक और काम के आसपास बस

std::locale utf8(std::locale(), ::new std::codecvt_utf8<wchar_t>); 

कि संकलक के लिए बाध्य करेगा वैश्विक नई उपयोग करने के लिए लिखने के लिए, है लोकेल नई

संबंधित मुद्दे