Чому замість російських букв в консольному додатку виводиться сміття

А як же підсвічування синтаксису, висновок по F1 довідки за обраною функції і інші маленькі принади, скрашують безрадісне життя простого програміста? Ні, це вихід не для нас.

Якщо Ви почали писати консольную програму з нуля, він може Вам підійти. Перепишемо наш маленький шедевр ось так:

Ключове слово тут CharToOem - саме ця функція і перетворює нашу рядок в потрібну кодову сторінку. З висновком у нашої програми тепер все нормально.

Але постає наступне питання - що робити, якщо треба перекомпілювати в консольне Windows-додаток Вашу стару DOS-програму на 100000 рядків, написану на Borland C ++ 3.1, в якій така ситуація зустрічається в кожній другій рядку. Але ж доведеться ще підганяти її під MS-компілятор, та й пару шматочків коду хочеться соптімізіровать.

Тут мабуть має сенс застосувати хід конем, в сенсі

Потрібно мабуть згадати і ще

Втім, це й не вихід навіть, а так, тупичок. Працює він лише, якщо дотримані 3 умови:

  • Ваша програма буде працювати тільки під Windows NT
  • Для вікна вашої програми буде завжди встановлений шрифт Lucida Console
  • Ваша програма ніколи не буде працювати в повноекранному режимі - тільки в вікні.

Якщо всі ці 3 умови дотримані, досить вставити спочатку програми виклик функції SetConsoleOutputCP, задавши в якості параметра потрібну нам кодову сторінку: