Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/121: Рейтинг темы: голосов - 121, средняя оценка - 4.67
2 / 2 / 1
Регистрация: 04.03.2014
Сообщений: 65

Русификация вывода

10.03.2014, 21:34. Показов 22973. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Написал такую программу:

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
50
51
52
#include <iostream>
#include <string>
#include <iomanip>
#include <cmath>
using namespace std;
#include "calculateModule.h"
int main() {
    setlocale(LC_ALL, "RUS");
    int COD;
    int calcCOD;
    double integ1;
    double integ2;
    string PIN;
    CalcMod iCalcMod;
    cout << "Введите PIN: ";
    getline(cin, PIN);
        if(PIN == "1004598PIN") {
            cout << setw(40) << "Welcome!" << endl;
            cout << "Введите код операции.\n " << "Для калькулятора - 1"
            << "\nДля выхода введите -1\n" << "КОД: ";
            cin >> COD;
            while(COD != -1) {
                if(COD == 1) {
                    cout << "Вы в калькуляторе!" << "\nВведите тип операции." << "\nДля унарных операций - 1"
                    << "\nДля бинарных операций - 2" << "\nДля выхода в главное меню введите -1\n" << "КОД: ";
                    cin >> calcCOD;
                    while(calcCOD != -1) {
                    
                        if(calcCOD == 1) {
                            ;
                            }
                        if(calcCOD == 2) {
                            cout << "Введите числа: ";
                            cin >> integ1 >> integ2;
                            iCalcMod.setIntegers(integ1, integ2);
                            iCalcMod.binarOperations();
                                }
                        if(calcCOD == -1) {
                            ;
                            }
                        cout << "Вы в калькуляторе!" << "\nВведите тип операции." << "\nДля унарных операций - 1"
                        << "\nДля бинарных операций - 2" << "\nДля выхода в главное меню введите -1\n" << "КОД: ";
                        cin >> calcCOD;
                }
            }
            cout << "Введите код операции.\n " << "Для калькулятора - 1" << "\nДля рисования - 2"
            << "\nДля выхода введите -1\n" << "КОД: ";
            cin >> COD;
        }
    }
    return 0;
}
.cpp файл, и

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 <iomanip>
#include <cmath>
using namespace std;
class CalcMod {
public:
    void setIntegers(double integer1, double integer2) {
        integ1 = integer1;
        integ2 = integer2;
        }
    void binarOperations() {
        cout << "Введите код операции.\nДля умножения - 1" << "\nДля деления - 2" << "\nДля вычитания - 3" << "\nДля сложения - 4" << endl;
        cout << "КОД: ";
        cin >> operateCod;
        switch(operateCod) {
            case 1:
                result = integ1 * integ2;
                cout << "Произведение равно - " << setprecision(3) << fixed << setw(20) << result << endl;
            break;
            
            case 2:
                result = integ1 / integ2;
                cout << "Частное равно - " << setprecision(3) << fixed << setw(20) << result << endl;
            break;
            
            case 3:
                result = integ1 - integ2;
                cout << "Разность равна - " << setprecision(3) << fixed << setw(20) << result << endl;
            break;
            
            case 4:
                result = integ1 + integ2;
                cout << "Сумма равна - " << setprecision(3) << fixed << setw(20) << result << endl;
            break;
            
            case '\n':
            case '\t':
            
            default:
                cout << "Код неправильный" << endl;
            break;
        }
    }
private:
double integ1, integ2, result;
int operateCod;
};
.h файл


Решил проверить себя в плане циклов... На два пустых IF не смотрите, туда еще что-нибудь сделаю. Я знаю что вопрос уже задавался раз сто...НО, как мне русифицировать вывод текста, ибо печатает непонятно что... setlocale(LC_ALL, "RUS"); не помогает. Пожалуйста объясните именно на этом примере. Командная строка MVS 2010, шрифт Lucida Console я поставил. И еще один вопрос: как в таком случае правильно подключать заголовочные файлы С++ библиотеки...тут я их просто продублировал в обоих файла, но наврятле это правильно. Заранее спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.03.2014, 21:34
Ответы с готовыми решениями:

Русификация в с++
Всем привет, у меня есть код, в результате выполнения которого я могу написать какое-либо предложение, потом написать слово и он мне...

Русификация консольных приложений
Народ, помогите плиз. Есть ли прога, позволяющая русифицировать консольные приложения на с++? Заранее простите за безграмотность. Изучаю...

Русификация при помощи класса.
Всем привет! Требуется Ваша помощь в создании файла описания класса для русификации консольной программы. Например есть код (Взято из...

11
17 / 17 / 4
Регистрация: 06.07.2012
Сообщений: 510
10.03.2014, 22:07
Здравствуйте.
Ваша проблема в том, что Вы неправильно указываете параметры: правильно - так:
C++
1
setlocale(LC_ALL, "Russian");
, а в вашем примере:
C++
1
setlocale(LC_ALL, "Rus");
С наилучшими пожеланиями, proggamer12.

Добавлено через 1 минуту
По второму вопросу скорее всего нужно почитать про директивы препроцессора.
0
2 / 2 / 1
Регистрация: 04.03.2014
Сообщений: 65
10.03.2014, 22:24  [ТС]
Изменил параметр, проблема осталась(
0
17 / 17 / 4
Регистрация: 06.07.2012
Сообщений: 510
11.03.2014, 00:21
Какую среду Вы используете - Visual studio? Если да, то какой версии?

Попробуйте написать Hello World, и проверить работу русского языка в нем. Возможно в одной из строк кода сидит ошибка, которую Вы увидите, сделав правильно что-то простое (т. е. вывод на экран надписи "Здравствуй, Мир"

Добавлено через 44 секунды
P. S. Впишите в calculateModule.h setlocale тоже (на всякий случай)
0
2688 / 2260 / 244
Регистрация: 03.07.2012
Сообщений: 8,231
Записей в блоге: 1
11.03.2014, 00:28
Попробуте вставить
C++
1
setlocale(LC_ALL, "Russian");
и оставить режим консоли по-умолчанию.
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.03.2014, 00:32
C++
1
2
3
4
5
6
7
8
#include <windows.h>
 
int main()
{
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
  ...
}
В свойствах консоли выбрать шрифт: Lucida Console.

Добавлено через 3 минуты
Цитата Сообщение от engine76 Посмотреть сообщение
И еще один вопрос: как в таком случае правильно подключать заголовочные файлы С++ библиотеки...тут я их просто продублировал в обоих файла, но наврятле это правильно. Заранее спасибо.
Тут достаточно прописать их в .h файле. using namespace std пишите после всех инклудов.
0
2 / 2 / 1
Регистрация: 04.03.2014
Сообщений: 65
11.03.2014, 15:57  [ТС]
Перепробовал все варианты, не работает... Среда Visual sudio 2010.

Добавлено через 9 минут
Так не работает (шрифт Lucida)

C++
1
2
3
4
5
6
7
8
9
#include <windows.h>
#include <iostream>
using namespace std;
int main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    cout << "Привет мир" << endl;
    return 0;
    }
И так тоже

C++
1
2
3
4
5
6
7
#include <iostream>
using namespace std;
int main() {
    setlocale(LC_ALL, "Russian");
    cout << "Привет мир";
    return 0;
    }
0
2688 / 2260 / 244
Регистрация: 03.07.2012
Сообщений: 8,231
Записей в блоге: 1
11.03.2014, 16:09
Я предлагал использовать стандартную консоль, без "люсид"
Миниатюры
Русификация вывода  
0
2 / 2 / 1
Регистрация: 04.03.2014
Сообщений: 65
11.03.2014, 16:15  [ТС]
E:\Programms\VS2010\VC>cl universalModule.cpp
Оптимизирующий компилятор Microsoft (R) C/C++ версии 16.00.30319.01 для x64
(C) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.

universalModule.cpp
E:\Programms\VS2010\VC\INCLUDE\xlocale(3 23) : warning C4530: Использован обработ
чик исключений C++, но семантика уничтожения объектов не включена. Задайте парам
етр /EHsc
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.

/out:universalModule.exe
universalModule.obj

E:\Programms\VS2010\VC>universalModule
Р'Р?РчР?РёС'Рч PIN: -1

E:\Programms\VS2010\VC>

В консоли все стандартно
0
2688 / 2260 / 244
Регистрация: 03.07.2012
Сообщений: 8,231
Записей в блоге: 1
11.03.2014, 16:18
Похоже, что текст программы в Unicode
0
2 / 2 / 1
Регистрация: 04.03.2014
Сообщений: 65
11.03.2014, 16:39  [ТС]
Все понял в чем проблема была...в notepad++ по умолчанию UTF8 кодировка была) Всем спасибо!
0
17 / 17 / 4
Регистрация: 06.07.2012
Сообщений: 510
11.03.2014, 22:47
Удобнее было-бы использовать Visual Studio 2010 или более новую (есть Express версия) - http://www.microsoft.com/ru-ru... press.aspx
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.03.2014, 22:47
Помогаю со студенческими работами здесь

Русификация выводимого из переменных текста
например есть задание: Структура AEROFLOT с полями: - название пункта назначения рейса; - тип самолета. Действия с массивом...

Русификация Си++ с помощю препроцессора и #define
Возможна русификация всех Си++ которые позволяют использовать кириллицу в #define. // Заголовочный файл для русификации служебных слов...

Русификация сбита в системно независимом файле MVS
Создавал системно независимый exe-файл, все хорошо вышло. Нужно было написать программу,которая удаляет повторяющиеся слова и выводит эти...

Перегрузка оператора вывода в С++ (для вывода данных вектора)
Как правильно перегрузить оператор вывода для вектора чтобы он выводил все данные из вектора ? Для этого класса есил можно помогите. ...

Написать программу, которая должна включать функции для: - вывода шапки таблицы; - вывода данных одной строки
Написать программу, которая должна включать функции для: - вывода шапки таблицы; - вывода данных одной строки таблицы; - ввода и...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru