Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 15.03.2016
Сообщений: 29
1

Неправильная кодировка в консоли

07.12.2016, 20:39. Показов 1334. Ответов 1

#include "stdafx.h"
#include <iostream>
using namespace std;
const int strsize = 20;
int main()

struct bop {
char fullname[strsize];
char title[strsize];
char bopname[strsize];
int preference;
};
bop prog[3] =
{
("Richard","King","Doodle",2),
("Mike", "Baron", "Wolf",1),
("Gregory", "Prince", "Rabbit",3)
};
::cout << "Benevolent Order of Programmers Report" << endl
<< "a.display by name b.display by title" << endl
<< "c.display by bopname d.display by preference" << endl
<< "q.quit" << endl;
char select;
cin >> select;
switch (select)
{
case 'a':
{
for (int i = 0; i < strsize; i++) cout << prog[i].fullname;
break;
}
case 'd':
{
for (int i = 0; i < strsize; i++)
switch (prog[i].preference)
{
case 0: cout << prog[i].fullname;
break;
case 1: cout << prog[i].title;
break;
case 2: cout << prog[i].bopname;
break;
}
}
case 'q': break;
}

return 0;
}

Подскажите, пожалуйста, почему выводит каракули?

Benevolent Order of Programmers Report
a.display by name b.display by title
c.display by bopname d.display by preference
q.quit
a
╠╠╠╠Wo$╖(■П°W Для продолжения нажмите любую клавишу . . .
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.12.2016, 20:39
Ответы с готовыми решениями:

FFMpeg и неправильная кодировка
всем привет, ситуация следующая: использую библиотеку ffmpeg для того чтобы создать видео из...

Неправильная кодировка в SQLite
Помогите, не правильная кодировка когда я с помощью SQLite получаю данные из файла &quot;Login Data&quot;...

Перевод из string в wstring. Неправильная кодировка
Здорова господа! Перевожу строку из string в wstring, в строке русские символы и они выводятся в...

Неправильная последовательность ввода/вывода в консоли
Ввод информации о первом студенте правильно работает, а дальше уже нет. Это не мой код и мне сложно...

__________________

Записывайтесь на профессиональные курсы C++ разработчиков
1
954 / 650 / 299
Регистрация: 26.02.2015
Сообщений: 2,994
07.12.2016, 20:58 2
Лучший ответ Сообщение было отмечено Pascal-_-Killer как решение

Решение

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <iostream>
 
using namespace std;
 
const int strsize = 20;
 
struct bop {
    char fullname[strsize];
    char title[strsize];
    char bopname[strsize];
    int preference;
};
 
int main() {
 
    const unsigned int SIZE = 3;
 
    bop prog[SIZE] =
        {
            { "Richard", "King", "Doodle", 2 },
            { "Mike", "Baron", "Wolf", 1 },
            { "Gregory", "Prince", "Rabbit", 3 }
        };
 
    cout 
        << "Benevolent Order of Programmers Report" 
        << endl
        << "a.display by name b.display by title" 
        << endl
        << "c.display by bopname d.display by preference" 
        << endl
        << "q.quit" 
        << endl;
 
    char select;
    cin 
        >> select;
 
    switch (select) {
 
        case 'a':
            for (int i = 0; i < SIZE; i++) {
 
                cout 
                    << prog[i].fullname;
 
            }
 
            break;
 
        case 'd':
 
            for (int i = 0; i < SIZE; i++) {
 
                switch (prog[i].preference) {
 
                    case 0: 
                        cout 
                            << prog[i].fullname;
                        break;
 
                    case 1: 
                        cout 
                            << prog[i].title;
                        break;
 
                    case 2: 
                        cout 
                            << prog[i].bopname;
                        break;
 
                }
 
            }
 
            break;
            
        case 'q': 
            break;
 
    }
 
 
    system("PAUSE");
    return 0;
 
}
Добавлено через 4 минуты
Во-первых, поля структур нужно инициализировать не в круглых скобах, а в фигурных.
Во-вторых, в Вашей версии, в этом месте, например,
Цитата Сообщение от Pascal-_-Killer Посмотреть сообщение
for (int i = 0; i < strsize; i++)
написана полная бессмыслица. Нужно выводить не количество символов в имени или фамилии, а число персон в структуре.

Добавлено через 22 секунды
В-третьих, не нужно каждый блок case заключать в фигурные скобки. Зачем?

Добавлено через 35 секунд
В-четвертных, тело функции main надо брать в фигурные скобки.

Добавлено через 1 минуту
В-пятых, определение структуры можно вынести из функции main. Нечего ему там делать.
В-шестых, научитесь код оформлять, пока не поздно.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.12.2016, 20:58

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Кодировка в консоли(C)
Здравия Я к вам с очередной проблемой:)Читал сейчас тему русские шрифты в консоли и задался...

Кодировка в консоли VS
Здравствуйте! Проблема вот в чём: Необходимо, чтобы текст отображался точно также, как в...

Кодировка консоли
Добрый день. Не удается мне понять, что не так. Как только я не игрался с setLocale и...

Кодировка в консоли
Добрый день , имея некоторый опыт программирования на c# решил так же изучить С++, однако при...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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