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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Способы отображения русского в консоли 
:(
    Опции темы
Dmi3ev
Дата 7.6.2009, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Для личных целей хотелось бы собрать различные способы отображения русских символов в консоли, причем не ставится задача сделать это самым рациональным способом, просто способы должны быть различные.
Например, я делаю так:
Код

#include <iostream>
#include <windows>
//---------------------------------------------------------------------------
int main()
{
        char s[]="Привет, мир!";
        CharToOem(s, s);
        std::cout<<s<<std::endl;
        system("pause");
        return 0;
}
//---------------------------------------------------------------------------

при этом прошу соблюсти некоторые условия (необязательно, но я прошу)
1) пишете свой способ, желательно с примером, как у меня
2) не критикуете другой способ, потому как хотелось бы, чтобы каждый пост был по делу
3) если ваш способ, допустим похож на мой, но при этом вы сделали функцию для обработки русского текста, или перегрузили что-то, или еще как-то сделали, то прошу не молчать, и тоже выложить свой вариант
4) и последнее, пустословия ваще не нужно... коротко, свой способ и все
а если хочется поговорить, и тд, то прошу воздержаться... давайте соберем все способы, это будет полезно и мне, и многим, кто на этот форум заходит... а новичкам, так тем более...

Добавлено через 3 минуты и 47 секунд
ах, да, и еще, если кто-то это делает, непрограммно, а настраивая среду, то пишите название среды, и настройки...


--------------------

PM MAIL   Вверх
Alexeis
Дата 7.6.2009, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Можно юникод в wcout 
Код

wcout << L"Привет, мир!"



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Rififi
Дата 7.6.2009, 23:48 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



setlocale(LC_ALL, "");
std::cout << "Привет, мир!" << std::endl;
PM MAIL   Вверх
andrew_121
Дата 7.6.2009, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


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

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



Rififi, Мне почему-то твой не помогает... Пробую в студии2008. Или нужно уникодный проект создать?

Добавлено @ 23:52
Я вот как делаю. Почему-то работает только в MinGW. Для студии, пост выше.
Код

#include <stdlib.h>

/***************************************************************************/

int main(int argc, char** argv) {
    system("chcp 1251 > nul");
    printf("Русский текст)))");
    return 0;
}

/***************************************************************************/



Это сообщение отредактировал(а) andrew_121 - 8.6.2009, 02:21


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Dmi3ev
Дата 8.6.2009, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Rififi, Alexeis, andrew_121, пожалуйста потрудитесь и отредактируй свои примеры до полноценных, я бы хотел просто, чтобы было все до ужаса понятно, чтобы у andrew_121, да и у кого бы то ни было вопросов никаких не возникало, если пример требует подключения чего либо, или еще что-то, то, пожалуйста, уточните это.
я просто хочу потом потихоньку сделать справочник, в котором будет много чего, и все будет до ужаса понятно, так сказать на благо программирования в России, да и в других странах, где понимают по русски...


--------------------

PM MAIL   Вверх
W4FhLF
Дата 8.6.2009, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

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



Код

int main(int argc, char* argv[])
{
    const char* loc = "Russian_Russia.ACP";
    setlocale(LC_ALL, loc);
    std::cout.imbue(std::locale("Russian_Russia.ACP"));
    std::cout << "Привет!" << std::endl;
}



--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
GoldFinch
Дата 8.6.2009, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



Код

#include <locale>

int main()
{
    setlocale(LC_ALL,"Russian");
...
}


PM MAIL ICQ   Вверх
mrbrooks
Дата 8.6.2009, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


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

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



Код

setlocale(LC_ALL,"Russian_Russia.1251");

PM MAIL   Вверх
Cheloveck
Дата 8.6.2009, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



просто
Код

setlocale(LC_ALL, ".1251");

Вполне помогает, без раша_раша =) 1251 и так раша...

Добавлено через 2 минуты и 37 секунд
Кстати, самый простой метод - писать в FAR редакторе или в люом другом, который потдерживает cp866.

Виндовая функция WriteConsole так же не вызывает никакой абры-кадабры.

Под никсами подобной проблемы вообще нет, кодировка системы и консоли одна и та же.


--------------------
user posted image
PM Jabber   Вверх
math64
Дата 9.6.2009, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Cheloveck @  8.6.2009,  17:40 Найти цитируемый пост)
Под никсами подобной проблемы вообще нет, кодировка системы и консоли одна и та же.

А если хочешь написать портируемую программу и не хочешь менять кодировку исходников при переносе?
PM   Вверх
Cheloveck
Дата 9.6.2009, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(math64 @  9.6.2009,  09:04 Найти цитируемый пост)
А если хочешь написать портируемую программу и не хочешь менять кодировку исходников при переносе? 


Ну, тогда единственное - так
Код

#ifdef WINDOWS
setlocale(LC_ALL, ".1251");
#endif



--------------------
user posted image
PM Jabber   Вверх
andrew_121
Дата 9.6.2009, 13:18 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


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

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





--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
olicheg
Дата 9.6.2009, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

#include "stdafx.h"

#include <windows.h>



int main(int argc, char* argv[])
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);

printf("1 Просмотр");
return 0;
}


Это сообщение отредактировал(а) olicheg - 12.6.2009, 15:05
PM MAIL   Вверх
semibug
Дата 9.6.2009, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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




void printf_oem( char *pcFmt, ... )
{
    static const int BufferSize = 1024;

    va_list            List;
    static char        cBuf[ BufferSize ];

    va_start( List, pcFmt );
    vsprintf_s( cBuf, BufferSize, pcFmt, List );
    va_end( List );

    CharToOem( cBuf, cBuf );

    printf( cBuf );

}

PM   Вверх
Dmi3ev
Дата 10.6.2009, 02:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



olicheg, semibug, а вы не замечаете, что ваши сообщения, в которых написан код немного отличаются от остальных по внешнему виду??? пользуйтесь кнопкой код, она не просто так... 
ЗЫ отредактируйте свои посты, если нетрудно...

Это сообщение отредактировал(а) Dmi3ev - 10.6.2009, 02:22


--------------------

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

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

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

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

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


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

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


 




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


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

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