Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
outoftime
║XLR8║
510 / 432 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
#1

Русик консоли - C++

12.02.2010, 21:06. Просмотров 1910. Ответов 38
Метки нет (Все метки)

Я конешно понимаю что поднимаю эту тему тысячный раз, но все таки:
пишу на wxDev-C++ для русификации код:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <locale.h>
 
using namespace std;
 
int main()
{
    setlocale (LC_ALL,"Russian");
    cout << "Привет мир!" << endl;
    system("pause");
}
Дело в том, что мне как-бы курсач надо русифицыровать, а то преподы обижаются, что они мол аглицкого не знают..
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2010, 21:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Русик консоли (C++):

Клавиши F1-F12 в консоли, и работа с мышкой в консоли - C++
Я искал на сайте, но не нашел упоминания о том как обрабатывать и или узнавать где находится курсор мышки (и еще мне надо бы узнать нажатие...

считывание с консоли ( не с клавы, а именно с консоли) - C++
нужно написать функцию которая возвращает string в котором написано 500 символов которые были выведены в консоли от начала. среда :...

Меню на консоли - C++
Здравствуйте! Изучаю C++, для практики ради делаю консольное меню через класс. Может быть мне, пока что, ещё далеко до претендента на...

Анимация в консоли - C++
Как вы делаете анимацию в консоли? Я просто очищал екран вызывал метод который выводил все на екран но оно начиет мигать и как-то не...

Убрать _ в консоли - C++
Можно ли скрыть мигающий элемент?

Строка в консоли - C++
Что сделать что бы в консоли, когда выводиться строка, были не крякозябры, а нормальный текст? Русский текст.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,242
Завершенные тесты: 1
13.02.2010, 17:48 #16
outoftime, вот
я вот таким раком это делаю:
Код:

// установить вручную шрифт Lucida Console в свойствах окна консоли
// и запомнить это для всех окон с этим именем
// записать в начале программы строку
#include <windows.h>
// записать в начале функции main ( после строки с символом { )
// две следующих строки
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Добавлено через 26 секунд
outoftime, мне это всегда помогает
0
outoftime
║XLR8║
510 / 432 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
13.02.2010, 18:41  [ТС] #17
МедведЪ, непомогло..
0
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,242
Завершенные тесты: 1
13.02.2010, 18:45 #18
outoftime,
C++
1
2
3
4
5
6
7
8
9
10
11
12
char bufRus[256];
 
char* Rus(const char* text) {
      CharToOem(text, bufRus);
      return bufRus;
      }
int main()  {
    cout << Rus("Привет ,Лопух!")<< endl;
    system("pause");
    return 0;
    
}
Добавлено через 50 секунд
C++
1
system("chcp 1251");
1
outoftime
║XLR8║
510 / 432 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
13.02.2010, 18:49  [ТС] #19
МедведЪ, подскажи лучше как перегрузить оператор "<<" для std::cout что-бы добавить русификацию для строк
0
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,242
Завершенные тесты: 1
13.02.2010, 18:52 #20
outoftime, не понял
0
outoftime
║XLR8║
510 / 432 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
13.02.2010, 19:01  [ТС] #21
что-то типа:
C++
1
2
char *buf = new char[500];
operator << (const char *s) { CharToOem(s,buf); return buf; }
Добавлено через 34 секунды
я вообщето не шарю как это делать поэтому и спрашиваю
0
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,242
Завершенные тесты: 1
13.02.2010, 19:25 #22
outoftime, код не мой,код с темы Русского шрифта..зы таки не понял..
Цитата Сообщение от outoftime Посмотреть сообщение
operator << (const char *s) { CharToOem(s,buf); return buf; }
ты так хочешь русский текст выводить что ли
0
outoftime
║XLR8║
510 / 432 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
13.02.2010, 21:13  [ТС] #23
ты перегружал когда-то операторы ==, ++, --, !=, * и т.д. для собственных класов?
я хочу перегрузить оператор "<<" для cout-a из стандартной библиотеки, что-бы он в случаи получения строки сначала ее русифицыровал, после чего выводил.
0
ailia
27 / 26 / 1
Регистрация: 27.12.2009
Сообщений: 106
13.02.2010, 22:12 #24
а извращением с фаром никто не пользовался? плюс такого метода - то, что он универсален для всех языков программирования
0
outoftime
║XLR8║
510 / 432 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
13.02.2010, 22:24  [ТС] #25
ailia, ты не поверишь, но я комплексую когда слышу это название..
0
cibertronic
256 / 143 / 13
Регистрация: 27.12.2009
Сообщений: 894
21.02.2010, 11:55 #26
интересно... а можно ли замутить перегрузку cout или printf чтоб стазу выполнялась функция
Цитата Сообщение от VAN32 Посмотреть сообщение
char buff[256];
char* Rus(const char *str)
{
CharToOem(str,buff);
return buff;
}
0
outoftime
║XLR8║
510 / 432 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
21.02.2010, 12:09  [ТС] #27
C++
1
2
3
4
5
6
7
8
ostream &operator << (ostream &out, const char *text)
{
    int n = strlen(text);
    char *s = new char[ n+1 ];
    CharToOem(text, s);
    out.write(s, n);
    return out;
}
Добавлено через 16 секунд
cibertronic, так что-ли?

Добавлено через 6 минут
Цитата Сообщение от cibertronic Посмотреть сообщение
char buff[256];
char* Rus(const char *str)
{
CharToOem(str,buff);
return buff;
}
Это плохой вариант, а вдруг мы захотим взять и написать менюшку следующим блоком:
C++
1
2
3
4
5
cout << "первая строка из кучи, ну просто очень большого количества символом\n"
        "и вдруг она продолжается в следующей строчке\n"
        "и в следующей\n"
        "и т.д...\n"
        "конец.";
Никто не будет принебрегать этим способом вывода нужного нам текста, т.к. он намного приятней, а ограничение избавляет нас этого счастья, так что лучше перестраховатся
0
cibertronic
256 / 143 / 13
Регистрация: 27.12.2009
Сообщений: 894
21.02.2010, 12:22 #28
я имею в виду при работе с текстом, допустим
C++
1
2
 SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
дает нам вывод русских букв в теккстовый документ, а
C++
1
2
3
4
5
6
char buff[256];//буфер
char* Rus(const char *str)
{
    CharToOem(str,buff);//Кодировка UTF-8
    return buff;
}
при использавании функции cout<<Rus("текст")<<endl;
текст введенный в ковычках на экрап русский, неплохо было бы это объеденить как нибудь, и может даже в отдельный заголовочный файл записать, чтоб при необходимости включить в программу..... ах да и еще... при в ключении строк
C++
1
2
 SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
вводимые в окне с клавы буквы выводятся опять же не корректно, но записываются в файл по русски, при считывании опятьже с включенными строками программе тож не корректны
0
outoftime
║XLR8║
510 / 432 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
21.02.2010, 12:27  [ТС] #29
cibertronic, перегрузите операторы ввода/вывода моим методом и сообщите результат
0
cibertronic
256 / 143 / 13
Регистрация: 27.12.2009
Сообщений: 894
21.02.2010, 12:35 #30
I
Error: klient.cpp(35,7):Ambiguity between 'operator <<(ostream &,const char *)' and 'ostream::operator <<(const char *)'
Error: klient.cpp(36,9):Ambiguity between 'operator <<(ostream &,const char *)' and 'ostream::operator <<(const char *)'

Добавлено через 31 секунду
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
#include <iostream.h>
#include <fstream.h>
#include <conio.h>
#include <windows.h>
 
/*char buff[256];//буфер
char* Rus(const char *str)
{
    CharToOem(str,buff);//Кодировка UTF-8
    return buff;
} */
 
ostream &operator << (ostream &out, const char *text)
{
    int n = strlen(text);
    char *s = new char[ n+1 ];
    CharToOem(text, s);
    out.write(s, n);
    return out;
}
 
 
 
 
 
void main()
{
 
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
char num[10],name[10];
ofstream output("base.txt",ios::app); // открытие файла для записи
cin>>num>>name;
cout<<"данные записаны в файл. ожидаю новых данных"<<endl;
output<<num<<" "<<name<<endl;
output.close();
getch();
}
Добавлено через 1 минуту
в общем такие ошибки
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2010, 12:35
Привет! Вот еще темы с ответами:

Меню в консоли - C++
Меня интересует вот что: зачем в функции int menu(); вот это условие code=getch(); if (code==224) ...

Кириллица в консоли - C++
Знаю что вопрос уже не раз задавали, но там люди программировали в какой-либо из IDE. Я же программирую на Windows в MinGW(эмулятор g++,...

Вывод в консоли - C++
//12.cpp #include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; void starline(); ...

Создание консоли - C++
Хочу сделать командную строку на основе стандартной, вот код, но никак не пойму как заставить работать команду cd. int main() { ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.02.2010, 12:35
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru