Image default
C++ Програмування

Компіляція кирилиці в С++

Мабуть Ви не раз намагалися вивести з консольного додатку С++ український текст, але він виводився некоректно.

Для прикладу коли ми використаємо код з попередньої статті, лише в операторі cout, замість “Hello Wordl”, напишемо “Привіт світ”, отримаємо наступне:

Вивід даних:

Для того, щоб уникнути цієї проблеми нам потрібно використовувати функцію setlocale() всередині функції main()

Функція setlocale задає локаль, яка буде використовуватися поточною програмою. Можна змінити всі параметри локалі, або конкретні її частини. Ця функція також може бути використана для отримання імені поточної локалі, передавши NULL в через параметр locale.

Локаль містить інформацію про те, як інтерпретувати і виконувати певні операції вводу / виводу та перетворення.

Отже, коли ми додамо функцію setlocale(), в якій використаємо два параметри(LC_ALL, "Ukr"), отримаємо наступне:

Також, можна опустити останній аргумент функції –  setlocale(LC_ALL, "Ukr"), його можна замінити на setlocale(0, ".1251"); – працездатність програми від цього не зміниться

Бачимо вже кращу ситуацію, але літера «і» не відображається коректно в консолі.

Для успішного введення і виведення всіх символів кирилиці в консоль треба використовувати функції: SetConsoleOutputCP() і SetConsoleCP().

Функція SetConsoleOutputCP встановлює кодову сторінку виведення даних, використовувану консоллю.

Функція SetConsoleCP встановлює кодову сторінку введення, використовувану консоллю. 

Наступна тестова програма демонструє виведення рядків кирилиці в консоль:

Для початку підключимо бібліотеку #include "Windows.h"

Windows.h потрібен для того, що б Ви могли використовувати в своїй програмі функціонал, що надається операційною системою Windows.

Отримаємо наступний результат

Як бачимо все виводить доволі коректно!

Related posts

Введення та виведення даних

Just_Programmer

Оператор вибору варіантів switch

Just_Programmer

Типи даних в С++

Just_Programmer

10 коментарів

Leave a Comment