1 Востаннє редагувалося Адріян Ігорович (11.03.2013 21:34:49)

Тема: Як використовувати кирилицю у консольних програмах під Win

Привіт. Напевно на кожному форумі, є з десяток таких тем
от тепер і на нашому буде :)
Питання думаю зрозуміле, треба зробити так, щоб консольні програмки
під Win , могли нормально виводити кирилицю, а то по дефолту самі караказябри.

Що я тільки не пробував, щоб писати кирилицею, і кодування змінював

chcp 1251

і setlocale юзав, пробував звісно SetConsoleCP, та ще низку
інших як сторонніх, так і самопальних функцій, та нічого з того
навіть близько не допомогло.
Я знаю на форумі, є люди які добре розбираються у С/C++, може
Ви щось підкажете.

2

Re: Як використовувати кирилицю у консольних програмах під Win

Кирилиця у віндовій консолі - пекло: при практичній малопридатності - купа геморою.
От вам приклад із найпростішого:

#include <windows.h>
#include <cstdio>
#include <iostream>

using std::cout;

int main()
{
    char str[50]={0};
    CharToOem("Моє твоє не шарить.\n", str); /* The simpliest way to convert */
    cout<<(str); /* 1st way */
    printf("%s", str); /* 2nd way */
    return 0;
}

Можна, власне, і свою функцію спаяти, та'як нас колись змушували на навчанні. Та то більше для закріплення навичок роботи з ASCII, ніж якостей декодера.

З.І: код вище нормально обробив літери "Ёё", "Її", однак не справився із нашою "і". Тому для українізації консолі ліпше написати власну функцію або ж пошаманити із транслітерацією цієї букви, наприклад.

I belong to the Dead Generation.
Подякували: Адріян Ігорович1

Re: Як використовувати кирилицю у консольних програмах під Win

Велике спасибі. Так довго мучився з тим всім, а тут от і все обходиться
однією функцією.