How to write unicode character characters in C ++ in ms-dos console?

How to write farsi unicode character in C ++ in ms-dos?

cout <"Helo world" <"<" ""

+7
c ++ persian farsi
source share
4 answers
#include <iostream> #include <locale> #include <string> int main() { using namespace std; wstring wcs = L"δΈ­ζ–‡"; locale old = wcout.imbue(locale("") ); // "" is environment default locale wcout<<wcs<<endl; wcout.imbue(old ); // restore old locale } 
+3
source share

You need to convert the string to the correct code page. MS-DOS code pages are called CP437, and CP is called three digits. Please note that usually only less than 256 different characters can be displayed, and therefore many Unicode characters simply cannot be displayed in text mode.

+3
source share

you can use wchar_t instead of char.

and you should use wcout instead of cout too.

if your console supports unicode, this will work. Another way for the Iranians was software called "vegaf", but it was many years ago, and I forgot it.

0
source share
 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(); 
0
source share

All Articles