2010-01-23 12 views
5

मैं सी ++ में these UTF-8 characters कैसे मुद्रित करता हूं?मैं यूटीएफ -8 अक्षरों सी ++ कैसे मुद्रित करता हूं?

+1

, क्या फ़ॉन्ट आप उपयोग पर निर्भर करता है कि क्या यह यूनिक्स या विंडो है, चाहे आप एक कंसोल या एक जीयूआई एपीआई लिख रहे हैं। –

+0

अधिमानतः पार मंच कंसोल – y2k

+0

ये वर्ण ASCII वर्ण सेट का हिस्सा नहीं हैं, जिसका अर्थ है कि आपको उन्हें मुद्रित करने से पहले एक फ़ॉन्ट चुनना होगा। कंसोल ऐप्स के लिए फोंट का चयन करने के लिए कोई क्रॉस प्लेटफ़ॉर्म तरीका नहीं है। मुझे नहीं लगता कि आप इसे विंडोज़ पर भी कर सकते हैं। –

उत्तर

0

अच्छा, आप जानते हैं कि यह संभव है क्योंकि आपका ब्राउज़र उन्हें प्रस्तुत कर सकता है।

  • ♠ = 0x2660
  • ♣ = 0x2663
  • ♥ = 0x2665
  • ♦ = 0x2666

: Windows पर आप अपने यूनिकोड कोड अंक की खोज करने charmap.exe एप्लेट उपयोग कर सकते हैं एक सी/सी ++ प्रोग्राम उन्हें प्रदर्शित करने के लिए चुनौती है। यह किसी भी प्रकार के गैर-प्लेटफार्म विशिष्ट तरीके से संभव नहीं होगा जबतक कि आप क्यूटी या wxwidgets जैसे क्रॉस-प्लेटफ़ॉर्म UI लाइब्रेरी का उपयोग न करें। एक Windows जीयूआई कार्यक्रम में आप WM_PAINT संदेश हैंडलर में इस तरह यह कर सकते हैं:

case WM_PAINT: { 
     hdc = BeginPaint(hWnd, &ps); 
     HFONT hFont = CreateFont(16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, L"Arial Unicode MS"); 
     HGDIOBJ oldFont = SelectObject(hdc, hFont); 
     RECT rc = {0, 0, 666, 16}; 
     DrawTextEx(hdc, L"\x2660\x2663\x2665\x2666", -1, &rc, DT_LEFT, 0); 
     SelectObject(hdc, oldFont); 
     DeleteObject(hFont); 
     EndPaint(hWnd, &ps); 
    } 
    break; 
3

बस अपने टर्मिनल पर उपयुक्त बाइट्स आउटपुट करें, और सुनिश्चित करें कि टर्मिनल आपके डेटा को प्रदर्शित करने के लिए यूटीएफ -8 एन्कोडिंग का उपयोग कर रहा है। सी ++ खुद अपेक्षाकृत यूटीएफ 8-अज्ञेयवादी है। यह सिर्फ uint_8 की एक सरणी है।

(जब तक आप UTF-8 के साथ तार पर चरित्र उन्मुख संचालन में किसी प्रकार का उपयोग करना चाहते हैं। तो फिर तुम सरणी अनुक्रमित और सामान्य स्ट्रिंग परिवर्तन दिनचर्या के बजाय, UTF-8 हेरफेर कार्यों का उपयोग करने की जरूरत है।)

उदाहरण के लिए sprintf("%c%c%c\n", 0xE2, 0x99, 0xA0);

0

सी ++ में: std :: wcout < < एल "wstr [" < < wstr < < एल ']' < < std :: endl;

सी में: printf ("% ls \ n \ n", wstr);

+3

wchar_t को यूटीएफ -16 होने की गारंटी नहीं है। यह निश्चित रूप से यूटीएफ -8 नहीं होने वाला है। – jamesdlin

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