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

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

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

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

12.02.2010, 21:06. Просмотров 1879. Ответов 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");
}
Дело в том, что мне как-бы курсач надо русифицыровать, а то преподы обижаются, что они мол аглицкого не знают..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2010, 21:06     Русик консоли
Посмотрите здесь:

Графика в консоли - C++
Существует ли возможность реализовать графику в консольных приложениях С++ с использованием стандартных библиотек. (без создния собственных...

Графика в консоли - C++
Помогите разобраться с графикой в консоле. компилирую код в Dev C++ #include &lt;iostream&gt; #include &lt;windows.h&gt; int main(){ ...

Мусор в консоли - C++
Ищу подстроку в строке и забиваю её в массив, в итоге в последнем cout выводится не то, что нужно: вместо &quot;ло в бою, очень ло&quot; выводится...

Очистка консоли - C++
Здравствуйте подскажите пожалуйста как мне на с++ (каким способом) можно в процессе исполнения программы очистить все записи в консоле ??

Фокус консоли - C++
Как мне реализовать условие: Если консоль потеряла фокус, установить его... Мне нужно чтобы пользователь не смог при включенной...

Круг в консоли - C++
Всем привет! Буду благодарен, если кто-нибудь сможет подсказать решение. И так, имеется класс Circle, задается радиус и нужно...

закрытие консоли - C++
в чем допущена оплошность:требуется ввести размер матрицы,вводим допустим 5,происходит вывод на экран,далее следует выбор: удалить одну...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
outoftime
║XLR8║
506 / 428 / 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 секунды
я вообщето не шарю как это делать поэтому и спрашиваю
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,230
Завершенные тесты: 1
13.02.2010, 19:25     Русик консоли #22
outoftime, код не мой,код с темы Русского шрифта..зы таки не понял..
Цитата Сообщение от outoftime Посмотреть сообщение
operator << (const char *s) { CharToOem(s,buf); return buf; }
ты так хочешь русский текст выводить что ли
outoftime
║XLR8║
506 / 428 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
13.02.2010, 21:13  [ТС]     Русик консоли #23
ты перегружал когда-то операторы ==, ++, --, !=, * и т.д. для собственных класов?
я хочу перегрузить оператор "<<" для cout-a из стандартной библиотеки, что-бы он в случаи получения строки сначала ее русифицыровал, после чего выводил.
ailia
27 / 26 / 1
Регистрация: 27.12.2009
Сообщений: 106
13.02.2010, 22:12     Русик консоли #24
а извращением с фаром никто не пользовался? плюс такого метода - то, что он универсален для всех языков программирования
outoftime
║XLR8║
506 / 428 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
13.02.2010, 22:24  [ТС]     Русик консоли #25
ailia, ты не поверишь, но я комплексую когда слышу это название..
cibertronic
256 / 143 / 13
Регистрация: 27.12.2009
Сообщений: 893
21.02.2010, 11:55     Русик консоли #26
интересно... а можно ли замутить перегрузку cout или printf чтоб стазу выполнялась функция
Цитата Сообщение от VAN32 Посмотреть сообщение
char buff[256];
char* Rus(const char *str)
{
CharToOem(str,buff);
return buff;
}
outoftime
║XLR8║
506 / 428 / 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"
        "конец.";
Никто не будет принебрегать этим способом вывода нужного нам текста, т.к. он намного приятней, а ограничение избавляет нас этого счастья, так что лучше перестраховатся
cibertronic
256 / 143 / 13
Регистрация: 27.12.2009
Сообщений: 893
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);
вводимые в окне с клавы буквы выводятся опять же не корректно, но записываются в файл по русски, при считывании опятьже с включенными строками программе тож не корректны
outoftime
║XLR8║
506 / 428 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
21.02.2010, 12:27  [ТС]     Русик консоли #29
cibertronic, перегрузите операторы ввода/вывода моим методом и сообщите результат
cibertronic
256 / 143 / 13
Регистрация: 27.12.2009
Сообщений: 893
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 минуту
в общем такие ошибки
outoftime
║XLR8║
506 / 428 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
21.02.2010, 13:13  [ТС]     Русик консоли #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
40
41
42
43
44
45
46
47
48
49
#include <iostream>
#include <sstream>
#include <cstring>
#include <string>
#include <windows.h>
 
using namespace std;
 
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;
}
 
istream &operator >> (istream &in, char *text)
{
    int now = in.tellg(), count = 1, top = 0;
    while (in.get() == ' ');
    while (in.get() != ' ') ++count;
    char *buf = new char[count],
        *s = new char[count];
    in.seekg(now);
    while ( buf[top] = in.get() == ' ');
    while ( buf[++top] = in.get() != ' ');
    buf[top-1] = '\0';
    CharToOem(buf, s);
    text = s;
    return in;
}
 
int main()
{
   /* string s;
    getline(cin, s);
    stringstream tmp;
    tmp << s;
    while (tmp >> s)
        if (s.size() == 5) cout << "сурок ";
        else cout << s << " ";*/
    char *text = new char[500];
    freopen("in.txt","r",stdin);
    cin >> text;
    cout << text;
    system("pause");
    return 0;
}
Не знаю что здесь не так, наверное конвертирование происходит дважды и уже раз конвертированый текст не нужно еще раз пропускать черех CharToOem()

Добавлено через 2 минуты
cibertronic, какой у вас компилятор?? у меня wxDev-C++ в настройках компилятор MingW

Добавлено через 2 минуты
GCC Default copmpiler

Добавлено через 17 минут
С записью в файл нужно подумать, скорее всего в файл надо писать неперегружно, перегрузить надо только для вывода на екран
cibertronic
256 / 143 / 13
Регистрация: 27.12.2009
Сообщений: 893
21.02.2010, 13:15     Русик консоли #32
я на borland C++ 5.02 пишу. есть еще borland C++ builder v6.0 но он консоли не пишет, точнее не компилит. он формы выдает пустые после компиляции
outoftime
║XLR8║
506 / 428 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
21.02.2010, 13:16  [ТС]     Русик консоли #33
cibertronic, не пожалейте 60 метров скачайте нормальный компидятор: wxDev-C++
cibertronic
256 / 143 / 13
Регистрация: 27.12.2009
Сообщений: 893
21.02.2010, 13:22     Русик консоли #34
а при этом всем в выше описанном исходнике вот такие ошибки:
Info :Compiling C:\Documents and Settings\Валентина\Рабочий стол\src\russkij2.cpp
Error: russkij2.cpp(2,2):Unable to open include file 'SSTREAM.h'
Warn : string.h(549,3):Functions containing for are not expanded inline
Warn : string.h(557,3):Functions containing while are not expanded inline
Warn : string.h(563,3):Functions containing for are not expanded inline
Warn : string.h(575,3):Functions containing for are not expanded inline
Error: string.cc(662,24):Qualifier 'traits_type' is not a class or namespace name
Error: string.cc(662,26):Statement missing ;
Error: string.cc(663,44):Qualifier 'traits_type' is not a class or namespace name
Error: string.cc(663,24):While statement missing )
Error: string.cc(666,33):Undefined symbol 'size_type'
Error: string.cc(666,33):Statement missing ;
Error: string.cc(667,26):Undefined symbol 'i'
Error: string.cc(667,59):Qualifier 'traits_type' is not a class or namespace name
Error: string.cc(667,38):While statement missing )
Warn : string.cc(675,2):Function should return a value
Warn : string.cc(675,2):'c' is declared but never used
Warn : string.cc(675,2):Parameter 'is' is never used
Error: string.cc(679,33):Undefined symbol 'size_type'
Error: string.cc(679,33):Statement missing ;
Error: string.cc(681,16):Undefined symbol 'x'
Error: string.cc(682,30):Qualifier 'traits_type' is not a class or namespace name
Error: string.cc(682,32):Statement missing ;
Error: string.cc(684,28):Qualifier 'traits_type' is not a class or namespace name
Error: string.cc(684,30):Statement missing ;
Error: string.cc(687,30):Qualifier 'traits_type' is not a class or namespace name
Error: string.cc(687,32):Statement missing ;
Warn : string.cc(689,2):Parameter 's' is never used
Warn : russkij2.cpp(26,23):Possibly incorrect assignment
Warn : russkij2.cpp(27,25):Possibly incorrect assignment
Warn : russkij2.cpp(32,2):Parameter 'text' is never used
Error: russkij2.cpp(44,13):Call to undefined function 'freopen'
Error: russkij2.cpp(44,34):Undefined symbol 'stdin'
Error: russkij2.cpp(45,11):Ambiguity between 'operator >>(istream &,char *)' and 'istream::operator >>(char *)'
Error: russkij2.cpp(46,12):Ambiguity between 'operator <<(ostream &,const char *)' and 'ostream::operator <<(const char *)'
Warn : russkij2.cpp(49,2):'text' is assigned a value that is never used

Добавлено через 1 минуту
не, вопервых накладно выйдет по 3 р за мег, при неустойчивом соединении замучаюсь платить, да и потом я к этому привык

Добавлено через 44 секунды
ладно.....еще почитаю книжки.... спс
PB
Просто прогер
1278 / 1065 / 11
Регистрация: 13.03.2009
Сообщений: 2,502
21.02.2010, 15:35     Русик консоли #35
Проблема вообще надуманая!
Просто компилируйте прогу в юникоде и никаких проблем с кириллицей!
Код
OpenConsole()
Print("Привет мир")
Input()
End
Вложения
Тип файла: rar Консоль.rar (1.4 Кб, 17 просмотров)
outoftime
║XLR8║
506 / 428 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
21.02.2010, 15:50  [ТС]     Русик консоли #36
PB, а нука, с этого места по-подробнее..
PB
Просто прогер
1278 / 1065 / 11
Регистрация: 13.03.2009
Сообщений: 2,502
21.02.2010, 15:59     Русик консоли #37
Ну, нужно заставить компилятор, создать приложение формата Unicode.
Правда, компилятор должен поддерживать эту опцию. Не все компиляторы это умеют делать.
Миниатюры
Русик консоли  
outoftime
║XLR8║
506 / 428 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
21.02.2010, 16:38  [ТС]     Русик консоли #38
PB, вы, собственно, чем пользуетесь?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2010, 16:45     Русик консоли
Еще ссылки по теме:

Создание консоли - C++
подскажите код: менюшка: 1. вывести на экран 2. сделать тото. 3. выйти вопрос - как это реализуется в коде? чтоб меню...

шрифт в консоли - C++
как увеличить или уменьшить шрифт в консоли?

Локализация консоли - C++
Всем привет. Дело такое. Есть программа, которая при определенных условиях должна заменять символ в строке на 219 символ ASCII...

Текст в консоли - C++
Ребят, какие есть функции форматирования текста в консоли? В частности, мне нужно следующее: а) чтобы в консоли текст на след. строку...

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


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

Или воспользуйтесь поиском по форуму:
PB
Просто прогер
1278 / 1065 / 11
Регистрация: 13.03.2009
Сообщений: 2,502
21.02.2010, 16:45     Русик консоли #39
Цитата Сообщение от outoftime Посмотреть сообщение
вы, собственно, чем пользуетесь
Этим
Но ведь наверняка есть сишные компиляторы, поддерживающие юникод.
Yandex
Объявления
21.02.2010, 16:45     Русик консоли
Ответ Создать тему
Опции темы

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