| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > русский язык в среде Dev-c++(комп-р MinGW) |
| Автор: limelight 20.3.2010, 13:49 | ||
| Есть ли способ выводить кириллицу не сильно заморачиваясь? В вижуал студии это легко делается c помощью setlocale(). Здесь такое не прокатывает. Мне нужно сделать так, чтобы один раз указав выводить в кириллице, далее не употреблять для этого лишних функций, а писать просто
|
| Автор: nurik3 21.3.2010, 21:47 | ||||
Посмотри http://kpolyakov.narod.ru/school/c/faq.htm, может поможет. |
| Автор: bsa 21.3.2010, 21:53 |
| Мда... Проверил. Действительно, в MinGW 4.4.0 ни один из стандартных методов, кроме CharToOem() не работает. Создал https://sourceforge.net/tracker/?func=detail&aid=2974184&group_id=2435&atid=102435. |
| Автор: limelight 22.3.2010, 02:01 |
| bsa, здорово! nurik3, интересная ссылка,спасибо,только посмотрю позже. |
| Автор: limelight 4.4.2010, 12:25 |
| Каково же дальнейшее развитие событий??? Тут в комментах написали(если пройти по ссылке): "Sorry, but I just don't see *how* the behaviour of MinGW's setlocale() *can* differ from MSVC's. MinGW doesn't provide any implementation of setlocale(), so when your code calls it, you get *Microsoft's* own implementation, in the host system's standard runtime library, MSVCRT.DLL; any difference you see would appear to result either from an error in your own code, or from a change in functionality between versions of Microsoft's implementation." С английским плохо дружу, но что это значит? что эта функция данным компилятором не поддерживается, т.к. то, что мы предъявили - это наработка Microsoft ? так неужели у MinGW нет поддержки других языков? Получается что ждать нечего? |
| Автор: limelight 4.4.2010, 13:11 |
| nurik3, да, отчасти помогло, НО! В этом подходе предлагается заменить пару файлов - g++.exe и gcc.exe на g++rus.exe и gccrus.exe . Интересно, откуда взялись эти файлы, кто их создал?) К сожалению, после проделывания данных операций, скорость компиляции резко падает...Или может вообще зависнуть. |
| Автор: Luyan 4.4.2010, 14:06 | ||
limelight, если интересует только простота вывода попробуй так:
|
| Автор: limelight 4.4.2010, 14:47 |
Luyan, спасибо. Насколько я понял, здесь перегружается операция помещения в поток '<<', и таким образом происходит подмена одной кодировки другой, при помощи стандартной функции CharToOem(). Жаль только что до перегрузки операций я пока не добрался..) и еще жаль что непонятны некоторые детали. Спросил бы здесь, да вопросов будет море. Но общую мысль понял... |
| Автор: icebloodmos 17.12.2010, 05:33 |
| Классный форум и среду Dev-C++ и пост Luyan мне помог. |
| Автор: boostcoder 17.12.2010, 05:43 |
| господа, по правде сказать, никогда не приходилось выводить в консоль русский текст. а вообще, в венде бываю очень редко. но, мне кажется, кодировка исходника в UTF-8 должна помочь. проверьте, отпишитесь. у меня в подписи свежий mingw. проверьте и на нем. |
| Автор: bsa 18.12.2010, 22:12 |
| boostcoder, в Windows не работает. |
| Автор: ctpz 31.12.2011, 16:54 | ||||
Ты меня выручил. Спасибо. Добавлено через 1 минуту и 35 секунд Не знаю как отблагодарить)) |
| Автор: xvr 3.1.2012, 13:29 |
Отблагодарил |
| Автор: ctpz 15.1.2012, 10:32 |
Модератор: Сообщение скрыто. |
| Автор: borisbn 15.3.2012, 12:47 |
| Вы будете смеяться, но на старости лет напоролся на эту же проблему, но... с вариациями)) Прежде всего - что использую:
Что накопал: 1. Разницы в компиляторах нет (в части русского языка, ессно))). 2. setlocale работает на Win7 без всяких танцев 3. setlocale не работает на WinXP 4. CharToOem работает везде 5. setlocale в программе, откомпилированной MSVC 2008, работает везде Вариант с CharToOem не нравится, т.к. в большом проекте приходится в каждый исходник вставлять описание перегруженного опреатора <<, а при создании нового исходника - не забыть добавить это безобразие туда. Вопрос: что, со времён поднятия этого вопроса - 20.3.2010 - ничего не изменилось ??? Спасибо. |
| Автор: bsa 15.3.2012, 17:55 |
| Похоже, что нет. По всей видимости, mingw использует какую-то глючную либу еще от MSVC6. А в Win7 ее пофиксили. |