Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> русский язык в среде Dev-c++(комп-р MinGW), FAQ смотрел, поиск использовал 
:(
    Опции темы
limelight
Дата 20.3.2010, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 19.10.2009

Репутация: нет
Всего: нет



 Есть ли способ выводить кириллицу не сильно заморачиваясь?
В вижуал студии это легко делается c помощью setlocale().

Здесь такое не прокатывает. Мне нужно  сделать так, чтобы один раз указав выводить в кириллице, далее не употреблять для этого 
лишних функций, а писать просто 
Код

cout<<"вот так";
.
PM MAIL ICQ   Вверх
nurik3
Дата 21.3.2010, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 21.3.2010

Репутация: нет
Всего: нет



Цитата(limelight @ 20.3.2010,  13:49)
Есть ли способ выводить кириллицу не сильно заморачиваясь?
В вижуал студии это легко делается c помощью setlocale().

Здесь такое не прокатывает. Мне нужно  сделать так, чтобы один раз указав выводить в кириллице, далее не употреблять для этого 
лишних функций, а писать просто 
Код

cout<<"вот так";
.

Посмотри здесь, может поможет.
PM MAIL   Вверх
bsa
Дата 21.3.2010, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Мда... Проверил. Действительно, в MinGW 4.4.0 ни один из стандартных методов, кроме CharToOem() не работает.
Создал отчет об ошибке.
PM   Вверх
limelight
Дата 22.3.2010, 02:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 19.10.2009

Репутация: нет
Всего: нет



bsa,  здорово!

nurik3, интересная ссылка,спасибо,только посмотрю позже.
PM MAIL ICQ   Вверх
limelight
Дата 4.4.2010, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 19.10.2009

Репутация: нет
Всего: нет



Каково же дальнейшее развитие событий???
Тут в комментах написали(если пройти по ссылке):

"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 нет поддержки других языков?

Получается что ждать нечего?smile
PM MAIL ICQ   Вверх
limelight
Дата 4.4.2010, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 19.10.2009

Репутация: нет
Всего: нет



nurik3,  да, отчасти помогло, НО!

В этом подходе предлагается заменить пару файлов - g++.exe и gcc.exe на g++rus.exe и gccrus.exe .
Интересно, откуда взялись эти файлы, кто их создал?) 
К сожалению, после проделывания данных операций, скорость компиляции резко падает...Или может вообще зависнуть.
PM MAIL ICQ   Вверх
Luyan
Дата 4.4.2010, 14:06 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 3.12.2008

Репутация: 2
Всего: 7



limelight, если интересует только простота вывода попробуй так:
Код

#include <iostream>
#include <windows.h>
using namespace std;

ostream& operator<<(ostream& out, const char* str)
{
    char buf[100];
    if(CharToOem(str, buf))
    {
        for(int i = 0; str[i] != 0; i++)
            out << buf[i];
    }
    return out;
}
int main(int argc, char *argv[])
{
    cout << "вот так" << endl;
    
    system("PAUSE");
    return 0;
}

PM   Вверх
limelight
Дата 4.4.2010, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 19.10.2009

Репутация: нет
Всего: нет





Luyan,  спасибо.
Насколько я понял, здесь перегружается операция помещения в поток '<<', и таким образом происходит подмена одной кодировки другой, при помощи стандартной функции CharToOem(). Жаль только что до перегрузки операций я пока не добрался..) и еще жаль что непонятны некоторые детали. Спросил бы здесь, да вопросов будет море. 

Но общую мысль понял...
PM MAIL ICQ   Вверх
bsa
Дата 6.4.2010, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(limelight @  4.4.2010,  12:25 Найти цитируемый пост)
С английским плохо дружу, но что это значит? что эта функция данным компилятором не поддерживается, т.к. то, что мы предъявили - это наработка Microsoft ? так неужели у MinGW нет поддержки других языков?
Смысл ответа заключается в том, что его автор удивляется, как работа setlocale может отличаться, когда он общий - т.е. используется setlocale из стандартной библиотеки Windows. Скорее всего, MS что-то где-то подкрутила, что setlocale работает иначе.

PM   Вверх
icebloodmos
Дата 17.12.2010, 05:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 17.12.2010

Репутация: нет
Всего: нет



Классный форум smile . Я только начал учиться программированию  и конечно же наступил на те же грабли. Я так же использую MinGW,
и среду Dev-C++  и пост Luyan мне помог.

PM MAIL   Вверх
boostcoder
Дата 17.12.2010, 05:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



господа, по правде сказать, никогда не приходилось выводить в консоль русский текст. а вообще, в венде бываю очень редко. но, мне кажется, кодировка исходника в UTF-8 должна помочь. проверьте, отпишитесь.
у меня в подписи свежий mingw. проверьте и на нем.
PM WWW   Вверх
bsa
Дата 18.12.2010, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



boostcoder, в Windows не работает.
PM   Вверх
ctpz
Дата 31.12.2011, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 27.12.2011

Репутация: нет
Всего: нет



Цитата(Luyan @ 4.4.2010,  14:06)
limelight, если интересует только простота вывода попробуй так:
Код

#include <iostream>
#include <windows.h>
using namespace std;

ostream& operator<<(ostream& out, const char* str)
{
    char buf[100];
    if(CharToOem(str, buf))
    {
        for(int i = 0; str[i] != 0; i++)
            out << buf[i];
    }
    return out;
}
int main(int argc, char *argv[])
{
    cout << "вот так" << endl;
    
    system("PAUSE");
    return 0;
}

Ты меня выручил. Спасибо.

Добавлено через 1 минуту и 35 секунд
Не знаю как отблагодарить))
PM MAIL   Вверх
xvr
Дата 3.1.2012, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(ctpz @  31.12.2011,  16:54 Найти цитируемый пост)
Не знаю как отблагодарить)) 

Отблагодарил smile

PM MAIL   Вверх
ctpz
Дата 15.1.2012, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 27.12.2011

Репутация: нет
Всего: нет




Модератор: Сообщение скрыто.

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1314 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.