Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2012, 11:39   #11
#include <Markus>
Неистово негодуэ
Пользователь
 
Аватар для #include <Markus>
 
Регистрация: 11.09.2011
Сообщений: 61
По умолчанию

если Вы пишете в кодировке виндоуса (1251), то это уже в корне не верно, так как сама консоль - это окошко ДОСа. Пишите в 866 кодировке. Я использовал функцию, которая перекодировала буквы из виндоуса в дос. Что-то вроде этого:

Код:
void print_rus(const char* c)
{
	char ch;
 
	for (int i=0;c[i]!='\0';i++)
	{
		ch=c[i];
		if ((ch>='А') && (ch<='п')) ch-=64;
		else if ((ch>='р') && (ch<='я')) ch-=16;
		else if (ch=='Ё') ch+=72;
		else if (ch=='ё') ch+=57;
		else if (ch=='и') ch+=67;
 
		printf("%c", ch);
	}
}
Только тут сразу выводится через printf. Вы можете сувать перекодированные символы в char*, и оттуда уже отправлять туда, куда хотите.

Зачем я не использовал SetConsoleCP(1251); ? Потому что при смене кодировки таким образом все остальные символы, которых нет на клавиатуре, изменялись в черт знает во что. Поэтому, если хотите использовать весь ACSII набор, то советую использовать именно мою перекодировачную функцию.
Жёстко негодую и тупю на всех.
#include <Markus> вне форума Ответить с цитированием
Старый 06.01.2012, 21:59   #12
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от #include <Markus> Посмотреть сообщение
если Вы пишете в кодировке виндоуса (1251), то это уже в корне не верно, так как сама консоль - это окошко ДОСа.
Вы ошибаетесь. Черненькое консольное окошко -это самое обычное вин32 окно, которое внешне косит под досовское, и используется устройством консоли для ввода и вывода данных.

Сама эта консоль - устройство, глубоко запрятанное в недрах ОС Windows. Взаимодействие с консолью и пользовательским приложением осуществляется только средствами WIN API

Все эти printf или cout в конечном итоге запустят методы WIN API для вывода и ввода, а именно: ReadFile и WriteFile

WINAPI имеют специализированные функции для работы с кодировками консольного окна. И нет никакого смысла дополнительно перекодировать символы для вывода, если тоже самое за пользовательское приложение может сделать ОС.
_Bers вне форума Ответить с цитированием
Старый 14.01.2012, 20:26   #13
Oleg34
Пользователь
 
Регистрация: 09.09.2011
Сообщений: 48
По умолчанию

Здравствуйте, я даже не знаю, похожа у меня проблема или нет. По этой ссылке, я задавал вопрос по поводу подключения кириллицы. Если кто сможет понять в чем причина моей проблемы, заранее спасибо! Вот ссылка на тему:
http://www.programmersforum.ru/showt...206#post959206
Oleg34 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод русских символов из MSSQL DimaKGD PHP 8 06.06.2015 10:09
Кодировка русских символов Dеlphi Общие вопросы Delphi 6 26.07.2011 08:39
UnicodeString - кодирование русских символов. Freeman C++ Builder 3 15.06.2011 03:32
Считывание строки из консоли СИ с использованием getchar() vedro-compota Общие вопросы C/C++ 11 17.12.2010 12:19
Ввод и вывод русских букв в консоли sde C++ Builder 10 20.05.2010 03:02