मेरे कोड मूल रूप से यह है:सी ++: व्यापक वर्ण गलत तरीके से आउटपुट करते हैं?
wstring japan = L"日本";
wstring message = L"Welcome! Japan is ";
message += japan;
wprintf(message.c_str());
मैं विस्तृत तार उपयोग करने के इच्छुक रहा हूँ, लेकिन मैं नहीं जानता कि वे किस तरह outputted हैं, इसलिए मैंने wprintf इस्तेमाल किया। जब मैं इस तरह के रूप में कुछ चलाएँ:
./widestr | hexdump
hexidecimal कोड पॉइंट्स इस बनाने के लिए:
65 57 63 6c 6d 6f 21 65 4a 20 70 61 6e 61 69 20 20 73 3f 3f
e W c l m o ! e J p a n a i s ? ?
क्यों वे सब क्रम में कूद रहे हैं? मेरा मतलब है कि अगर wprintf गलत है तो मुझे अभी भी यह नहीं मिलता है कि यह इस तरह के विशिष्ट जुआ आदेश में क्यों उत्पादन करेगा!
संपादित करें: अंतहीनता या कुछ? वे प्रत्येक दो अक्षर घुमाने लगते हैं। हुह।
संपादित 2: मैंने wcout का उपयोग करने का प्रयास किया, लेकिन यह सटीक हेक्साइडसिमल कोडपॉइंट्स को आउटपुट करता है। अजीब!
शायद आपको 'cout << message << endl' आज़माएं। – phimuemue
@phimuemue, यह काम नहीं करता है, यह मुझे लगभग 30 त्रुटियों को भेजता है, पहले 'widestr.cpp: 18: त्रुटि:' std :: cout << message 'में' ऑपरेटर << 'के लिए कोई मिलान नहीं है, जिसमें कई शामिल हैं ओस्ट्रीम चार लक्षण या कुछ, यह चौड़ी स्ट्रिंग आउटपुट नहीं करेगा! –
आप किस प्लेटफ़ॉर्म और कंपाइलर का उपयोग कर रहे हैं? – hlovdal