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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Русский шрифт в командной строке 
:(
    Опции темы
Alex007
Дата 30.12.2005, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата
Там уже есть эта возможность?
А можно скачать по инету?

По иннету можно скачать только бесплатную версию - Express Edition(урезаная версия),
но спроси у кого-то может дадут пиратскую Professional smile smile smile smile
PM MAIL   Вверх
GOLD
Дата 30.12.2005, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Не знаю подойдет ли, но для печати по-русски в консольном приложении я написал такую функцию:
Код

void printRus(char str[])  //печать символов в кодировке windows
{
   int i, n=0;
   char *dest;
   while (str[n]!='\0')   //считаем количество символов в переданной строке
       n++;
   dest=(char *)malloc(n*sizeof(char));
   for (i=0; i<=n; i++)
      {
          dest[i]=str[i];
      }
   AnsiToOem(str,dest);
   printf(dest);
   free(dest);
}

а потом
Код

printRus("\nС новым годом!\n");

smile
PM MAIL   Вверх
Void
Дата 31.12.2005, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

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



GOLD
Оставляя в стороне сам подход к решению: а почему не воспользоваться strlen и strcpy вместо самописных циклов? Они, как правило, очень хорошо оптимизированы на уровне маш. кодов, там далеко не банальный цикл.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Dov
Дата 31.12.2005, 01:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Цитата(KARDAN @ 28.12.2005, 10:34)
Забыл написать, на машине установлена Win2k.

Может я чего-то не понял, тогда извинияюсь.
Код
#include <windows.h>
#include <stdio.h>

int main()
{
    SetConsoleOutputCP(1251);
    printf("\nС новым годом!\n");  

    return 0;
}

В окне вывода, в свойствах устанавливаешь шрифт Lucida Console. Всё.


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
GOLD
Дата 31.12.2005, 06:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Void Да уж! Я когда сюда вставил код, сам испугался smile
Спасибо за замечание!

Работает даже так:
Код

void printRus(char str[])
{
   AnsiToOem(str,str);
   printf(str);
}

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


Шустрый
*


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

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



IMHO проще всего так:
Код

#include <stdio.h>
#include <conio.h>

char *rus(char *st)
{
 unsigned char *p=st;
  while(*p)
  {
    if(*p>192)
      if (*p<=239)
        *p-=64;  // А,Б,В ... Я,а,б,в ... п
      else
        *p-=16; // р ... я
    p++;
  }
  return st;
}

int main()
{
 printf("%s",rus("Русский шрифт в консоли!"));
 getch();
}

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


Новичок



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

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



Приветствую!

Вот вы пишите
printf("%s",rus("Русский шрифт в консоли!"));

и ещё куча примеров как в консольном приложении буквы РФ были видны, так а если в самом редакторе пишется абра-кадабра, я не вижу, что я написал русскими буквами. Настройки облазил с верху до низу!!!
PM MAIL   Вверх
WERITAS
Дата 2.1.2007, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


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

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



А я писал для себя вот такую функцию печати русских слов и до сих пор ей пользуюсь:
Код

void RusOut(char *Str)
{
unsigned char c;
for(int i=0;Str[i]!='\0';i++)
  {
  c=Str[i];
  if(c>127)
    {
    if(c<240)c-=64;
    else     c-=16;
    }
  cout<<c;
  }
}


Применение:
Код

RusOut("\nПривет Мир!");



--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
jonie
Дата 3.1.2007, 01:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



peshite translitom 8).
Ну или что самое простое и надежное пишите в UNICODE (хотя можно и без него -- смотрите setlocale).
Код

int _tmain(int argc, _TCHAR* argv[])
{
    const wchar_t s[]=L"Привет!";
    setlocale(LC_ALL,"russian_russia.866"); //замена ASCII на юникод в сообщениях
    wcout<<s;
    return 0;
}



--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Kirill89
Дата 3.1.2007, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я что - то путаю, или можно просто использовать CharToOem?


--------------------
PM MAIL WWW   Вверх
WERITAS
Дата 3.1.2007, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


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

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



Вот тебе еще такой вариант с использованием MFC'шной строки (разумеется в Project Settings установишь Use MFC in Shared DLL):

Код

CString oem(char* s)
{
  CString str(s);
  str.AnsiToOem();

return str;
}


Применение:
Код

cout<<oem("Привет Мир!")<<endl;



--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
DarthGuyver
Дата 15.11.2009, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот потратил несколько дней чтоб догнать как русский текст в консоль выводит!!!
Ниодин из способов выше не помог (CharToOem не пробовал)!!!
Видел тут 2 человека выкладывали собственные функции, но у меня они тоже почемуто не попёрли!
Вот написал свою функцию, кто буит пробовать. отпишитесь как она у вас пошла?

Код

#include <stdio.h>

void rus_print (char *s)
{
    char *p = s;

    while (*p)
    {
        if (*p >= 'А' && *p < ('п' + 1))
            printf ("%c", *p - 'А' - 128);
        else if (*p >= 'р' && *p < ('я' + 1))
            printf ("%c", *p - 'А' - 80);
        else
            printf ("%c", *p);
        p++;
    }
}


У меня заработала!!
Теперь буду ей пользоваться!!!

Это сообщение отредактировал(а) DarthGuyver - 15.11.2009, 01:07
PM MAIL   Вверх
sdukshis
Дата 15.11.2009, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А разве подобное:
Код

#include <stdio.h>
#include <locale.h>

int main(){
    setlocale(LC_ALL, "");

    printf("Привет мир!\n");

    return 0;
}

В Windows не работает?
PM MAIL   Вверх
DarthGuyver
Дата 15.11.2009, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Неа!!!

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


Серийный программист
****


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

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



DarthGuyver
Код

system("chcp 1251");

smile

Это сообщение отредактировал(а) chaos - 15.11.2009, 21:47
PM WWW   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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