@Izumov

Как программно в С++ перевести консоль в режим вывода символов unicode для корректного отображения кириллицы при вводе выводе русских символов?

Корректно выводить мне удавалось русский текст с помощью locale привожу пример текста программы где русский текст выводится правильно
#include
//#include
//#include
#include //для использования setlocale
#include // для использования setw
//#define

using namespace std;

int main()
{
// _setmode(_fileno(stdout), _O_U16TEXT);
setlocale(LC_CTYPE, "rus");
long pop1 = 4789426, pop2 = 274124, pop3 = 9761;
cout<< setw(11) << "Город "<< setw(12) << "Нас."<< endl;
cout << setw(11) << "Москва " < cout < cout << setw(11) << "Угрюмовка " << setw(12) << pop3 << endl;
return 0;
}
Пытался изменить шрифт консоли на шрифт поддерживающий unicode получилась такая программа
#include
#include
#define _O_U16TEXT 0x00020000
using namespace std;
int main()
{
SetConsoleOutputCP(1251);
//SetConsoleOutputCP(CP_UTF8);
system("mode con cols=100 lines=50"); //размер окна, вывод нужного количества строк в консоль (видимых)
HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);//получмть консоль
COORD size = { 100,100 };//символов строки, строк (если больше чем видимых, скрываются под ползунком прокрутки)
SetConsoleScreenBufferSize(hout, size);//размер буфера
////////////////////Меняем шрифт для отображения символов Unicode, можно пропустить - если у вас установлен нужный
CONSOLE_FONT_INFOEX cfi={sizeof(CONSOLE_FONT_INFOEX)}; //https://docs.microsoft.com/en-us/windows/console/c...
int res=GetCurrentConsoleFontEx(hout , false, &cfi); // Получить текущий шрифт
int rezchangeFont;
cfi.dwFontSize.X = 10;
cfi.dwFontSize.Y = 20;
rezchangeFont=SetCurrentConsoleFontEx(hout, TRUE, &cfi);
wcout << cfi.FaceName;
wcout << "! Lucida Console ";
cout << "C++-программирование-это сила!zzzzz";
cin.get();
return 0;
}
Но она не выводит корректно русские символы. Не могу понять в чем проблема. Подскажите где ошибка в программе из-за которой происходит некорректный вывод в консоль?639f002bbf478900968980.jpeg
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы