и правильно!Текст программы Вы набирали в родном редакторе Visual Studio, используя кодовую страницу 1251, а вывод текста в консольном приложении идет с использованием кодовой страницы 866. Что же делать с этим безобразием? Как известно из любого безвыходного положенния есть по крайней мере 3 выхода. Рассмотрим их по-порядку.
Как насчет определения специализации для шаблона класса ostream ???
В специализации оператора << для const char * и char * вызывать конвертирование текста при помощи функции CharToOem.
Впрочем, это и не выход даже, а так, тупичок. Работает он только, если соблюдены 3 условия:
— Ваша программа будет работать только под Windows NT
— Для окна вашей программы будет всегда установлен шрифт Lucida Console
— Ваша программа никогда не будет работать в полноэкранном режиме — только в окне.
Если все эти 3 условия соблюдены, достаточно вставить вначале программы вызов функции SetConsoleOutputCP, задав в качестве параметра нужную нам кодовую страницу
От себя: на самом деле второе условие включает третье
Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Re: Почему вместо русских букв в консольном приложении вывод
АК>Запускаете сей шедевр на исполнение и видите
АК>
АК>¦ЁштхЄ тёхь!
АК>
АК>и правильно!Текст программы Вы набирали в родном редакторе Visual Studio, используя кодовую страницу 1251, а вывод текста в консольном приложении идет с использованием кодовой страницы 866. Что же делать с этим безобразием? Как известно из любого безвыходного положенния есть по крайней мере 3 выхода. Рассмотрим их по-порядку.
Работаю в отделе локализации программ — руки поотбивал бы писателям в коде строк которые увидит пользователь, с особым садизмом сделал бы это с теми кто при этом использует символы отличные от ASCII.
String Table для чего сществует?
Я пишу в студии программу для терминала покупателя ( Cipher LAb CPT — 711 ). Для меня данная проблема актуальна, работать в студии и хочется и колется, но первый вариант как-то кривоват, подумываю о написании макроса для студии, который бы переводил символы из Win в Dos кодировку одним нажатием, или такое уже есть ? посоветуйте
PS: Компилятор syntech C ANSI и урезанный при этом, так что в этом случае всякие элементы высшего пилотажа с решением проблемы "внутри" кода исключены
S>и все дела...
... << RSDN@Home 1.1.0 stable >>
Re[3]: А почему нельзя воспользоваться SetConsoleOutputCP(12
Здравствуйте, Slicer [Mirkwood], Вы писали:
SM>Ну а почему бы pipes не воспользоваться, как я предлагал? Или этот компилятор даже APIшки напрямую юзать не позволяет?
Этот C компилятор "вещь в себе" ( слегка ANSI ), я собираю код в файл user.shx, а затем делаю download в device ( через rs232 ), ну и соответсвенно ни пайпов ни др. апи там не заюзать , теоретически можно реализовать в нем CharToOEM, но это имхо лишнее, негоже прошивку усложнять из-за среды разработки
SM>Slicer
... << RSDN@Home 1.1.0 stable >>
Re: Почему вместо русских букв в консольном приложении вывод
Здравствуйте! По ссылке http://www.ruslat.wm.ru/ ничего не открывается. В интернете много программ с таким же названием, но единственное, что они меняют, это картинка в правом нижнем углу. Что я делаю не так? Спасибо.
Re[2]: Почему вместо русских букв в консольном приложении вы
Здравствуйте, Olga____, Вы писали:
O__>По ссылке http://www.ruslat.wm.ru/ ничего не открывается.
помер вот то что у меня осталось — http://gzip.rsdn.ru/File/82/RusLat.rar
O__>В интернете много программ с таким же названием, но единственное, что они меняют, это картинка в правом нижнем углу. Что я делаю не так? Спасибо.
Если кто еще не знает, в VS .NET, не знаю в каком(у меня 2003), в меню File появился пункт "Advanced Save Options", в нем можно выбрать кодировку, в которой сохраняется исходник, что и есть решение всей проблемы. В выбранной кодировке сохраняются все файлы проекта.
Re: Почему вместо русских букв в консольном приложении вывод
В искустве летать есть один маленький секрет. Секрет этот в том,чтобы бросить себя изо всех сил на землю — и не попасть. Выберете погожий денек и попробуйте сами.
Re: Почему вместо русских букв в консольном приложении вывод
А еще можно пропускать через себя весь вывод.
Создать поток, в нем узнать и сохранить старый дескриптор для вывода на консоль (GetStdHandle)
Создать pipe и на через SetStdHandle установить его как вывод консоли.
Пришло чего-нибудь в pipe — делаем CharToOem и в "старый" вывод это дело.
Работает сразу в масштабе всего приложения.
В MSDN есть даже пример похожий. В нем только CharToOem не делают.
Может и будут косяки, но в целом, вроде, должно работать.
Re[2]: Почему вместо русских букв в консольном приложении вы