2013-01-17 58 views
5

मैं प्रोग्रामिंग के लिए बिल्कुल नया हूं, लेकिन ऐसा लगता है कि π(pi) प्रतीक ASCII हैंडल के आउटपुट के मानक सेट में नहीं है।आउटपुट यूनिकोड प्रतीक π और ≈ सी ++ win32 कंसोल अनुप्रयोग

मुझे आश्चर्य है कि कंसोल को π प्रतीक आउटपुट करने का कोई तरीका है, ताकि कुछ गणितीय सूत्रों के बारे में सटीक उत्तर व्यक्त किया जा सके।

+1

अपने कंसोल फ़ॉन्ट क्या है? जांचने के लिए बस CMD.EXE का उपयोग करें। यह विंडोज संस्करण से संस्करण के लिए अलग है और अनुकूलित किया जा सकता है। – MSalters

उत्तर

0

माइक्रोसॉफ्ट सीआरटी बहुत यूनिकोड-समझदार नहीं है, इसलिए इसे बाईपास करना और WriteConsole() का उपयोग करना आवश्यक हो सकता है। मैं और आप स्पष्ट रूप से WriteConsoleW()

2

उपयोग करने के लिए मैं (जैसे उन है कि एसटीएल का उपयोग के रूप में) किसी भी अन्य तरीकों के बारे में वास्तव में यकीन नहीं है की जरूरत है आप पहले से ही यूनिकोड के लिए संकलन संभालने हूँ, लेकिन आप Win32 WriteConsoleW का उपयोग कर के साथ ऐसा कर सकते हैं:

HANDLE hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE); 
LPCWSTR lpPiString = L"\u03C0"; 

DWORD dwNumberOfCharsWritten; 
WriteConsoleW(hConsoleOutput, lpPiString, 1, &dwNumberOfCharsWritten, NULL); 
0

मैं इसके सीखने के चरण में हूं, इसलिए मुझे कुछ गलत होने पर सही करें।

  1. उपयोग विस्तृत अदालत, CIN, स्ट्रिंग के इतने पर संस्करणों और:

    यह इस तरह लगता है एक तीन चरण की प्रक्रिया है। तो: wcout, wcin, wstring

  2. स्ट्रीम का उपयोग करने से पहले इसे यूनिकोड-अनुकूल मोड में सेट करें।
  3. यूनिकोड-सक्षम फ़ॉन्ट का उपयोग करने के लिए लक्षित कंसोल को कॉन्फ़िगर करें।

अब आप उन funky åäös को रॉक करने में सक्षम होना चाहिए।

उदाहरण:

#include <iostream> 
#include <string> 
#include <io.h> 

// We only need one mode definition in this example, but it and several other 
// reside in the header file fcntl.h. 

#define _O_WTEXT  0x10000 /* file mode is UTF16 (translated) */ 
// Possibly useful if we want UTF-8 
//#define _O_U8TEXT  0x40000 /* file mode is UTF8 no BOM (translated) */ 

void main(void) 
{ 
    // To be able to write UFT-16 to stdout. 
    _setmode(_fileno(stdout), _O_WTEXT); 
    // To be able to read UTF-16 from stdin. 
    _setmode(_fileno(stdin), _O_WTEXT); 

    wchar_t* hallå = L"Hallå, värld!"; 

    std::wcout << hallå << std::endl; 

     // It's all Greek to me. Go UU! 
    std::wstring etabetapi = L"η β π"; 

    std::wcout << etabetapi << std::endl; 

    std::wstring myInput; 

    std::wcin >> myInput; 

    std:: wcout << myInput << L" has " << myInput.length() << L" characters." << std::endl; 

    // This character won't show using Consolas or Lucida Console 
    std::wcout << L"♔" << std::endl; 
}