एमएस-डॉस में सी ++ में यूनिकोड चरित्र फारसी कैसे लिखें?एमएस-डॉस कंसोल में सी ++ में यूनिकोड चरित्र फारसी कैसे लिखें?
cout < < "हेलो वर्ल्ड" < < "سلام جهان";
एमएस-डॉस में सी ++ में यूनिकोड चरित्र फारसी कैसे लिखें?एमएस-डॉस कंसोल में सी ++ में यूनिकोड चरित्र फारसी कैसे लिखें?
cout < < "हेलो वर्ल्ड" < < "سلام جهان";
#include <iostream>
#include <locale>
#include <string>
int main()
{
using namespace std;
wstring wcs = L"中文";
locale old = wcout.imbue(locale("")); // "" is environment's default locale
wcout<<wcs<<endl;
wcout.imbue(old); // restore old locale
}
प्रश्न का उत्तर नहीं देता है: यह पूरी तरह से अलग-अलग वर्ण लिखता है: पी – Thomas
@ थॉमस: लेकिन जब तक कि आप पूरी तरह मस्तिष्क नहीं मर जाते (जो मुझे उम्मीद है कि सभी प्रोग्रामर के लिए सच नहीं है)। विभिन्न पात्रों को मुद्रित करने के लिए उपर्युक्त प्रोग्राम को बदलने की क्षमता (मुझे इसे कैसे रखा जाना चाहिए) "एक ब्रेड मृत कट और पेस्ट"। संपूर्ण बिंदु सही स्थानीय सेट करना है (डिफ़ॉल्ट रूप से "सी" लोकेल है जो सामान्य रूप से अंग्रेजी पर कुछ भी अच्छा नहीं है)। –
वांछित लैंगेज के अक्षरों वाले फ़ॉन्ट का उपयोग करना न भूलें। इसके अलावा, अरबी की तरह फारसी आरटीएल है, कुछ पत्र जुड़े हुए हैं और नहीं हैं। शुभकामनाएं जो आप चाहते हैं उसे करने के लिए बेवकूफ जीत कंसोल को "ठीक करने" की कोशिश कर रहे हैं;) – AraK
आपको स्ट्रिंग को उचित कोडपृष्ठ में बदलने की आवश्यकता है। एमएस-डॉस कोडपेजों को सीपी 437 जैसे नामित किया गया है, सीपी के बाद तीन अंक हैं। ध्यान दें कि आम तौर पर केवल 256 से कम वर्णों को प्रदर्शित किया जा सकता है और इस प्रकार कई यूनिकोड वर्णों को टेक्स्ट मोड में नहीं दिखाया जा सकता है।
सीपी 708 एमएस-डॉस में अरबी कोड पृष्ठ है। माइक्रोसॉफ्ट से पूरी सूची के लिए http://msdn.microsoft.com/en-us/library/cc195051.aspx देखें। – David
आप चार के बजाय wchar_t का उपयोग कर सकते हैं।
और आपको भी कोउट के बजाय wcout का उपयोग करना चाहिए।
यदि आपका कंसोल यूनिकोड का समर्थन करता है तो यह काम करेगा। ईरानियों के लिए एक और तरीका "वेगाफ" नामक एक सॉफ्टवेयर था, लेकिन यह बहुत सालों पहले था और मैं इसे भूल गया।
using namespace std;
setlocale(LC_ALL, "fa-IR");
time_t rawtime;
struct tm * timeinfo;
time(&rawtime);
timeinfo = localtime(&rawtime);
struct lconv * lc;
lc = localeconv();
LOGFONT * tFont;
tFont = GetFont();
CFont font;
VERIFY(font.CreateFont(
tFont->lfHeight, // nHeight
tFont->lfWidth, // nWidth
0, // nEscapement
0, // nOrientation
tFont->lfWeight, // nWeight
FALSE, // bItalic
FALSE, // bUnderline
0, // cStrikeOut
ARABIC_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
ANTIALIASED_QUALITY, // nQuality
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
tFont->lfFaceName)); // lpszFacename
const wchar_t yek = L'\u06F1';
const wchar_t dow = L'\u06F2';
const wchar_t seh = L'\u06F3';
const wchar_t chahar = L'\u06F4';
const wchar_t panj = L'\u06F5';
const wchar_t shish = L'\u06F6';
const wchar_t haft = L'\u06F7';
const wchar_t hasht = L'\u06F8';
const wchar_t noh = L'\u06F9';
const wchar_t sefr = L'\u06F0';
wchar_t wFATime[20];
wcscpy(wFATime, L"");
BOOL dayoftheweek = FALSE;
for (unsigned int i = 0; i<m_strText.GetLength(); i++)
{
char c = m_strText[i]; //this is your character
switch (c)
{
case '1':
wcsncat(wFATime, &yek, 1);
break;
case '2':
wcsncat(wFATime, &dow, 1);
break;
case '3':
wcsncat(wFATime, &seh, 1);
break;
case '4':
wcsncat(wFATime, &chahar, 1);
break;
case '5':
wcsncat(wFATime, &panj, 1);
break;
case '6':
wcsncat(wFATime, &shish, 1);
break;
case '7':
wcsncat(wFATime, &haft, 1);
break;
case '8':
wcsncat(wFATime, &hasht, 1);
break;
case '9':
wcsncat(wFATime, &noh, 1);
break;
case '0':
wcsncat(wFATime, &sefr, 1);
break;
case ':':
wcsncat(wFATime, L":", 1);
break;
case '.':
wcsncat(wFATime, L".", 1);
break;
case '/':
wcsncat(wFATime, L"/", 1);
break;
default:
dayoftheweek = TRUE;
}
}
CFont* def_font = pdc->SelectObject(&font);
HDC hdc = pdc->GetSafeHdc();
int old = pdc->SetBkMode(TRANSPARENT);
if (dayoftheweek)
{
CStringW strw(m_strText);
::TextOutW(hdc, m_poOffset.x, m_poOffset.y, strw, strw.GetLength());
}
else
{
::TextOutW(hdc, m_poOffset.x, m_poOffset.y, wFATime, wcslen(wFATime));
}
pdc->SelectObject(def_font);
pdc->SetBkMode(old);
// Done with the font. Delete the font object.
font.DeleteObject();
क्या आपका मतलब है 'कौन' के बजाय 'कैसे'? –
क्या आप वास्तव में एमएस-डॉस में हैं, या क्या आप विंडोज के आधुनिक संस्करण में कमांड प्रॉम्प्ट का मतलब है? –