Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
MegaEvgeniy
8 / 8 / 0
Регистрация: 06.11.2011
Сообщений: 113
#1

Почему MS-DOS не любит кириллицу ? (Или почему она не любит меня ?) - C++

14.12.2011, 04:47. Просмотров 1349. Ответов 4
Метки нет (Все метки)

Здравствуйте

Почему MS-DOS не любит кириллицу ?

У меня есть несколько консольных проектор различной сложности.

Почти везде использовал setlocale, "" .... но есть одна очень очень не приятная вещь...

При работе в простых проектах (без определения собственных классов) ввод и вывод инф-и прекрасно работает, Но стоит добавить свой класс и реализовать через него ввод и вывод инф-ы в консоль и в txt файл ... как начинается аброкадабра... Что я только не делал...

Организовывал переключение кодировок на входе и выходе консоли и файлового потока...

Пробовал разные методы установки "русской восприимчивости" в MS-DOS...

Максимум чего я достиг без переключения шрифта в консоли, так это корректного ввода и вывода русского шрифта в Самой консоли... Но уже вывод в файл осуществляется крякозябрами (((

Единственный метод решения данного полтергейста я нашёл в переключении шрифтов по умолчанию на Lucida Console и использования определения кодировки на входе и на выходе:

C++
1
2
SetConsoleCP (1251);
SetConsoleOutputCP (1251);
Помогите люди добрые, ну не жесть ли ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2011, 04:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему MS-DOS не любит кириллицу ? (Или почему она не любит меня ?) (C++):

IDE wxDev-C++, при создании кнопки на форме она почему-то становится во весь экран, почему? - C++
То есть ребята не смешно ни разу. Создаю форму, кидаю кнопку, ничего не предвещает плохого. Собираю проект, запускаю- и вот кнопка размером...

Почему не выводит кириллицу в Visual Studio 2017? - C++
Никак не могу подключить кириллицу в программу. Перепробовала уже много способов, а результат все тот же, вместо кириллицы вопросительные...

Почему выводит кириллицу при введении кодов ASCII? - C++
Добрый день! Ввожу char f=156; cout<<f; Это код знака фунта. Но вместо получаю ь. Работаю в Visual Studio. И вообще у меня...

Почему у меня не работает программа? - C++
блин что тут не так? #include <iostream> #include <math.h> using namespace std; const int n=5,m=6; int main() { int i,j; ...

Почему у меня ошибка в коде? - C++
Вот код: #include <iostream> using namespace std; int main() { int n; cout<<"Vvedi nomer misyaca.\n"; cin>>n; ...

посмотрите пожалуйста почему она не работает - C++
я переводил с паскаля на с++ program laboratorna1; uses crt; type ar=array of real; var j,n,i:integer; a:ar; s:real; ...

4
alkagolik
Заблокирован
14.12.2011, 07:39 #2
Русские шрифты в консоли
1
kravam
быдлокодер
1703 / 890 / 45
Регистрация: 04.06.2008
Сообщений: 5,489
14.12.2011, 08:06 #3
Цитата Сообщение от MegaEvgeniy Посмотреть сообщение
Почему MS-DOS не любит кириллицу ?

Не по теме:

не ну а чё ты хотел, соответствие английского алфавита определённым числам постоянно в любой кодировке, чего нельзя сказать про русский алфавит. Кто-то придумал эти кодировки, срубил бабла в свой время и угнал в штаты, а мы теперь мучайся. Это хорошо ещё что кодировок с киррилицей не так много, как могло быть, а то совсем замучались бы.

2
Байт
Нарушитель
Эксперт C
16672 / 10933 / 1675
Регистрация: 24.12.2010
Сообщений: 21,313
14.12.2011, 10:49 #4
Цитата Сообщение от kravam Посмотреть сообщение
Это хорошо ещё что кодировок с киррилицей не так много, как могло быть, а то совсем замучались бы.
Есть еще KOI-8, UNICODE, UTF8....
Можно поиграть в "Кто больше".

Цитата Сообщение от MegaEvgeniy Посмотреть сообщение
Почему MS-DOS не любит кириллицу ?
Да любит он кириллицу! Только она у него другая (OEM). А у Виндовоза - ANSI
Посмотри функции OemToAnsi, AnsiToOem

Добавлено через 14 минут
Цитата Сообщение от kravam Посмотреть сообщение
Кто-то придумал эти кодировки, срубил бабла в свой время и угнал в штаты,
Краткий исторический экскурс. Когда в 80-х МС-ДОС начал свое победное шествие по просторам бывшего Союза, была придумана некоторая кодировка кириллицы. Но жила она не долго, т.к забивала симпатичнейшие символы псевдографики. Почесали в затылке - придумали другую, оставлявшую псевдографику в покое. Назвали ее альтернативной. А ту, первую - основной. Конечно, все схватились за альтернативную (она и есть OEM). ANSI базируется на основной Психологически это понятно, основная все-таки. Но нам это головной боли прибавило - ой-йо-ей!
Кто придумал и куда свалил - не знаю, к сожалению

Добавлено через 1 минуту

Не по теме:

Диверсия, должно быть

1
MegaEvgeniy
8 / 8 / 0
Регистрация: 06.11.2011
Сообщений: 113
15.12.2011, 00:41  [ТС] #5
Жестоко судьба с нами обошлась, придёться приспосабливаться

Добавлено через 7 часов 41 минуту
Попробовал применить CharToOemA и нифига не вышло...

Делал несколькими способами и всё равно одно, даже CharToAnsi не бельме...

НО Решил проблему с помощью установки SetConsoleCP (1251) на ввод строки в потоке, SetConsoleCP (866) на ввод чисел в своём классе

При этом в исходном коде стояла setlocale( LC_ALL,"rus" )

И смена шрифта не нужна, УРААААА!!!!!!!!
0
15.12.2011, 00:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2011, 00:41
Привет! Вот еще темы с ответами:

Почему у меня не работает нужно исправить - C++
#include <iostream.h> #include <stdio.h> #include <string.h> #include <math.h>...

почему меня выкидывает на функции уменьшения? - C++
программа должна работать с теми строками где первый элемент не равен нулю. однулить все элементы строки после максимального, найти...

почему глобальную переменную не видно, хотя она объяылена? - C++
#include <vector> using namespace std; int min= 1; int main(){ min= 90; return 0; }

Как дальше доделать? Посмотрите. Почему она не работает? - C++
Определить, есть ли в данном массиве строка, состоящая только из отрицательных элементов. #include <iostream> #include <stdlib.h> ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.