मैं एक एमएफसी आवेदन लिख रहा हूँ। मुझे सीएसटींग क्लास का उपयोग कुछ और नहीं करने की ज़रूरत है। मैंने निम्नलिखित किया है क्योंकि यह एकमात्र तरीका था जिससे मैं सिरिलिक प्रदर्शित कर सकता था। बिना मुझे या तो प्रश्नवाचक चिन्ह मिल गए या कुछ भी दिखाई नहीं दिया।

_setmode(_fileno(stdout), _O_U16TEXT);

तो यह काम करता है:

CString strTestObj2("дададада");
wprintf(L"%s", strTestObj2);

लेकिन यह नहीं है:

CString strTestObj1("String1.");
printf("%s", strTestObj1);

यह एक रनटाइम त्रुटि देता है। इसे ठीक करने के लिए मुझे क्या करना होगा?

1
duerdak 14 अगस्त 2020, 00:15
3
आपको हर जगह चौड़ी स्ट्रिंग का उपयोग करना चाहिए, वह है L"дадада" और चार कार्यों में मिश्रण नहीं करना चाहिए, जैसे printf
 – 
user7860670
14 अगस्त 2020, 00:20
1
यदि आप printf का पुन: उपयोग करना चाहते हैं, तो आपको मोड वापस बदलना होगा। _setmode(_fileno(stdout), _O_TEXT); पर कॉल करें या CStringW strTestObj2(L"дададада English"); का उपयोग wprintf के साथ करें
 – 
Barmak Shemirani
14 अगस्त 2020, 07:17
1
CString एक वर्ग नहीं है। यह क्लास टेम्पलेट इंस्टेंटेशन के लिए टाइपिफ़ है। चूंकि हम आपके प्रोजेक्ट कॉन्फ़िगरेशन को नहीं जानते हैं, इसलिए हम यह नहीं देख सकते हैं कि CString वास्तव में क्या है, हालांकि wprintf और printf दोनों कॉल गलत हैं। वे एक विशेष एन्कोडिंग की अपेक्षा करते हैं, लेकिन आप एक ऐसा प्रकार प्रदान नहीं कर रहे हैं जो पारदर्शी रूप से विभिन्न एन्कोडिंग के बीच हो। इसके बजाय CStringW का प्रयोग करें।
 – 
IInspectable
15 अगस्त 2020, 09:46
यदि आपने अपनी यूनिकोड स्ट्रिंग को सही ढंग से (सभी यूनिकोड वर्ण) स्वरूपित किया है, तो आपको सही आउटपुट मिलना चाहिए, चाहे आपके सिस्टम का स्थान कुछ भी हो। साथ ही, यदि आपने सिरिलिक कोडपेज (1251) में अपनी एमबीसीएस स्ट्रिंग को अंग्रेजी (वर्ण <128) और सिरिलिक (वर्ण> = 128) दोनों के लिए सही ढंग से स्वरूपित किया है, तो आपको सही आउटपुट मिलना चाहिए, जब तक कि आपके सिस्टम का डिफ़ॉल्ट कॉपपेज सिरिलिक है ("गैर-यूनिकोड प्रोग्राम के लिए भाषा" विकल्प सेट करें - यह आवश्यक रूप से UI भाषा के समान नहीं है)। एमबीसीएस स्ट्रिंग का उपयोग करके आपको पश्चिम-यूरोपीय, पूर्व-यूरोपीय, ग्रीक, तुर्की आदि वर्ण नहीं मिलेंगे।
 – 
Constantine Georgiou
17 अगस्त 2020, 02:02

1 उत्तर

सबसे बढ़िया उत्तर

यह ओएस सिस्टम लोकेल को बल्गेरियाई में सेट करके तय किया गया था।

0
duerdak 19 जिंदा 2021, 17:37