Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/89: Рейтинг темы: голосов - 89, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 16.10.2017
Сообщений: 2
1

Русификация консольных приложений

04.08.2009, 19:59. Показов 18139. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Народ, помогите плиз. Есть ли прога, позволяющая русифицировать консольные приложения на с++? Заранее простите за безграмотность. Изучаю с++ всего 2-й день
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.08.2009, 19:59
Ответы с готовыми решениями:

Компиляция консольных приложений VC 6.0
Может быть я совсем дурак, но программировать ни разу не пробовал и даже не знаю с чего начать. Вот...

Разработка консольных приложений
Как в консольном приложении обеспечить вывод текста в кодировке 866 (MS-DOS) при наборе его в...

Объединение двух консольных приложений
Доброго времени суток. Имеется проект(не мой) с двумя консольными приложениями, собственно мне...

Создание консольных приложений Windows
Когда-то у меня был Microsoft Visual C++ и я лишь клацал F5 для компиляции консольных приложений....

16
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
04.08.2009, 20:21 2
Ты имеешь в виду кракозябры вместо русских букв, тогда тебе сюда
Русские шрифты в консоли
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
04.08.2009, 20:38 3
Создавай Unicode приложение и текст будет нормально отображаться.
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
04.08.2009, 20:53 4
вставляй вначале мейна
C++
1
setlocale( LC_ALL,"Russian" );
и будет тебе счастье
0
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
04.08.2009, 22:08 5
setlocale ( LC_ALL, "" );
Тогда и на китайском будет работать
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
04.08.2009, 22:13 6
odip, не понял?
0
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
04.08.2009, 22:16 7
Если тебе нужен именно русский - то сойдет второй аргумент "Russian".
Но вообще говоря если ты пишешь локализованную программу - можно указать второй аргумент - "". Это значит что будет браться значение локали, установленное в системе.
В число английской системе - это будет English. Для русских обычно ставят Russian по умолчанию.
Ну а в китайской системе это тоже будет работать
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
05.08.2009, 09:27 8
Цитата Сообщение от odip Посмотреть сообщение
Тогда и на китайском будет работать
Чтобы гарантировано работало на китайском, надо создавать Unicode приложение.
0
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
05.08.2009, 09:31 9
надо создавать Unicode приложение
То что приложение консольное, это еще не значит, что оно не может пользоваться Unicode.
0
Заблокирован
05.08.2009, 10:00 10
Можно также подключить russian.h - фурічит только для потоков iostream, т.е. printf не покатит, а также есть универсальная функция CharToOem(LPCTSTR sSrs, char * sDst); (чтобі юзать функцию нужно пожключить windows.h)
Юзаем функцию так
C++
1
2
3
char * chBuf = "Текст по русски";
CharToOem((LPCTSTR)chBuf,chBuf);
printf(chBuf);
листинг russian.h ниже
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef RUS_H
#define RUS_H
#include <iostream.h>
ostream& operator<<(ostream &stream,char* s){
    for(char* ps=s; *ps; ps++){
        if(*ps=='ё')
            stream<<char(241);
        else if(*ps=='Ё')
            stream<<char(240);
        else if(*ps>=-64 && *ps<=-17)           
            stream<<char(*ps+64+128);
        else if(*ps<0)
            stream<<char(*ps+64+176);
        else
            stream<<*ps;
    }
    return stream;
}
#endif
0
0 / 0 / 0
Регистрация: 16.10.2017
Сообщений: 2
05.08.2009, 16:55 11
Спасибо
0
10 / 10 / 2
Регистрация: 25.09.2008
Сообщений: 71
10.11.2009, 05:18 12
русские библиотеки для MFC - http://www.flint-inc.ru/rus/info/rusmfc.html
0
0 / 0 / 0
Регистрация: 04.08.2015
Сообщений: 3
09.01.2011, 15:51 13
Цитата Сообщение от M128K145 Посмотреть сообщение
вставляй вначале мейна
C++
1
setlocale( LC_ALL,"Russian" );
и будет тебе счастье
СПАСИБО!!!!
0
0 / 0 / 1
Регистрация: 29.07.2009
Сообщений: 119
09.01.2011, 19:08 14
А я делаю так. Подключаю Windows.h. В начале мейна пишу:
C++
1
2
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Когда запускаю прогу в свойства окна ставлю шрифт Lucida Console. И всё норм.
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
10.01.2011, 03:35 15
C++
1
std::locale().global(std::locale(""));
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <string>
#include <windows.h>
 
std::string ToRus(const std::string& one)
{
     std::string res;
     res.resize(one.size());
     CharToOem(const_cast<char*>(one.c_str()), const_cast<char*>(res.c_str()));
     return res;
}
 
std::string RusToChar(const std::string& one)
{
    std::string res;
    res.resize(one.size());
    OemToChar(const_cast<char*>(one.c_str()), const_cast<char*>(res.c_str()));
    return res;
}
 
int main()
{
     std::string str="Привет";
     std::cout<<ToRus(str)<<'\n';
     std::string some;
     std::cin>>some;
     std::cout<<ToRus(RusToChar(some))<<'\n';
     return 0;
}
0
Модератор
Эксперт Windows
8736 / 3361 / 244
Регистрация: 25.10.2010
Сообщений: 13,601
11.01.2011, 23:37 16
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <windows.h>
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <iostream.h>  void main ()
{int a,b,c;
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
char name[128];
CharToOem("Проверка суммирования двух целых чисел",name); //Заголовок в активном окне//
char ls[512]="Программу написал:\nВвод своих инициалов\n";
CharToOem(ls,ls);
cout<<ls<<endl;
SetConsoleTextAttribute(hOut,FOREGROUND_INTENSITY | FOREGROUND_GREEN); //Вывод зелёным цветом//
char start[512]="Программа проверки суммирования двух целых чисел\nЕсли результат будет больше чем 32767, будет выведено сообщение об ошибке\n";
CharToOem(start,start);
cout<<start<<endl;
//Вывод голубым цветом
SetConsoleTextAttribute(hOut,FOREGROUND_GREEN | FOREGROUND_INTENSITY | FOREGROUND_BLUE); 
char enter[512]="Пожайлуста, введите число №1 и нажмите Enter,\n затем введите число №2 и нажмите Enter\n";
CharToOem(enter,enter);
cout<<enter<<endl;
SetConsoleTitle(name);//Дополнения к активному заголовку
PCONSOLE_SCREEN_BUFFER_INFO bu=(PCONSOLE_SCREEN_BUFFER_INFO)malloc(sizeof(PCONSOLE_SCREEN_BUFFER_INFO));
//Вывод желтым цветом цветом
SetConsoleTextAttribute(hOut,FOREGROUND_GREEN | FOREGROUND_INTENSITY | FOREGROUND_RED);
scanf("%d%d",&a,&b);
c=a+b;
if (a,b,c <= 32767)
{
c=a+b;
printf ("\n  %d+%d",a,b);
printf ("\n  %d",c);
}
else
//Вывод красным цветом 
{
SetConsoleTextAttribute(hOut,FOREGROUND_INTENSITY | FOREGROUND_RED); 
    char enter1[512]="\aОшибка! Результат сложения приводит к переполнению!\n";
    CharToOem(enter1,enter1);
    cout<<enter1<<endl;
} 
getch();
}
Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <windows.h>
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <iostream.h>  void main ()
{int a,b,c;
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
char name[128];
CharToOem("Проверка суммирования двух целых чисел",name); //Заголовок в активном окне//
char ls[512]="Программу написал:\nВвод своих инициалов\n";
CharToOem(ls,ls);
cout<<ls<<endl;
SetConsoleTextAttribute(hOut,FOREGROUND_INTENSITY | FOREGROUND_GREEN); //Вывод зелёным цветом//
char start[512]="Программа проверки суммирования двух целых чисел\nЕсли результат будет больше чем 32767, будет выведено сообщение об ошибке\n";
CharToOem(start,start);
cout<<start<<endl;
//Вывод голубым цветом
SetConsoleTextAttribute(hOut,FOREGROUND_GREEN | FOREGROUND_INTENSITY | FOREGROUND_BLUE); 
char enter[512]="Пожайлуста, введите число №1 и нажмите Enter,\n затем введите число №2 и нажмите Enter\n";
CharToOem(enter,enter);
cout<<enter<<endl;
SetConsoleTitle(name);//Дополнения к активному заголовку
PCONSOLE_SCREEN_BUFFER_INFO bu=(PCONSOLE_SCREEN_BUFFER_INFO)malloc(sizeof(PCONSOLE_SCREEN_BUFFER_INFO));
//Вывод желтым цветом цветом
SetConsoleTextAttribute(hOut,FOREGROUND_GREEN | FOREGROUND_INTENSITY | FOREGROUND_RED);
scanf("%d%d",&a,&b);
c=a+b;
if (a,b,c <= 32767)
{
c=a+b;
printf ("\n  %d+%d",a,b);
printf ("\n  %d",c);
}
else
//Вывод красным цветом 
{
SetConsoleTextAttribute(hOut,FOREGROUND_INTENSITY | FOREGROUND_RED); 
    char enter1[512]="\aОшибка! Результат сложения приводит к переполнению!\n";
    CharToOem(enter1,enter1);
    cout<<enter1<<endl;
} 
getch();
}
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
12.01.2011, 23:45 17
Цитата Сообщение от AlexRyzhenko Посмотреть сообщение
А я делаю так. Подключаю Windows.h. В начале мейна пишу:
Код C++
1
2
SetConsoleCP(1251); SetConsoleOutputCP(1251);

Когда запускаю прогу в свойства окна ставлю шрифт Lucida Console. И всё норм.
Я тоже, хорошо бы это дело автоматизировать.
0
12.01.2011, 23:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.01.2011, 23:45
Помогаю со студенческими работами здесь

Идеи для консольных приложений
И снова здравствуйте! Я хотел закрепить прошедшее и сделать пару программ (калькулятор уже сделал),...

Ошибки при создании НЕ-консольных приложений
Если создавать консольное приложение, то всё отлично. А вот если создавать Win32 Project или MFC...

Помогите с заданием роектирование та реализация консольных приложений
Мне тут дали задание по С++, сам только начинаю эго учить. :dash2:Помогите. Задание: Конференция...

Компиляция консольных программ и приложений с формой в Embarcadero BCC102
Компиляция консольных программ и приложений с формой в Embarcadero BCC102: с какими аргументами...

Дату текущего дня присвоить string переменной (для консольных приложений)
извеняюсь, но не покажете как дату текущего дня присвоить к string переменной для консольных...

Что стоит изучить, что перейти от консольных приложений к оконным
Здравствуйте, изучал С/С++ по книге Харви Дейтела &quot;Как программировать на С&quot;. Посоветуйте,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru