С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
6 / 5 / 2
Регистрация: 05.10.2021
Сообщений: 380
1

записываю на русском в getline, отображается неправильно

24.02.2022, 11:18. Показов 890. Ответов 2

Author24 — интернет-сервис помощи студентам
Когда на экран должны выводиться фамилии и инициалы студентов со средним баллом > 4, отображается так, будто не было использовано setlocale(LC_ALL, "rus"), другие надписи на русском считываются правильно. Как сделать, чтобы фамилии на русском из getline считывались правильно?

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
#include <iostream>
#include <string>
using namespace std;
struct STUDENT
{
    string name;
    int group;
    int rating[5];
};
int main()
{
    setlocale(LC_ALL, "rus");
    const int n = 10;
    STUDENT masST[n];
    for (int i = 0; i < n; i++)
    {
        cout << "Введите фамилию и инициалы " << i + 1 << " студента: ";
        getline(cin, masST[i].name);
        cout << "Введите номер группы: ";
        cin >> masST[i].group;
        cout << "Успеваемость: " << endl;
        for (int j = 0; j < 5; j++)
        {
            cin >> masST[i].rating[j];
        }
        cin.ignore(32767, '\n');
    }
    for (int i = 1; i < n; i++)
    {
        for (int j = i; j > 0 && masST[j - 1].group > masST[j].group; j--)
        {
            STUDENT tmp = masST[j];
            masST[j] = masST[j - 1];
            masST[j - 1] = tmp;
        }
    }
    int f = 0;
    cout << "Средний балл > 4:\n";
    for (int i = 0; i < n; i++)
    {
        float sum = 0;
        for (int j = 0; j < 5; j++)
        {
            sum += masST[i].rating[j];
        }
        sum /= 5;
        
        if (sum > 4)
        {
            cout << masST[i].name << " группа " << masST[i].group << endl;
            f++;
        }
    }
    if (f == 0) cout << "нет";
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.02.2022, 11:18
Ответы с готовыми решениями:

Spring+freemarker Неправильно отображается bootstrap (вернее совсем не отображается) , не отображается css и картинки
вот security config @EnableWebSecurity @Configuration public class SecurityConfig extends...

Не отображается текст из файла на русском языке, отображается только английский
StreamReader stream = new StreamReader(new...

getline() неправильно читает числа
Я использую std::getline() для чтения данных из текстового файла построчно. Файл открыт с помощью...

Не отображается поиск на русском
Народ проблема такова у меня есть форма, она должна искать книги по бд на форме у меня combobox в...

Месяц не отображается на русском языке
Проблемы локализации Есть код mb_internal_encoding('UTF-8'); // Устанавливаем кодировку строк...

2
Модератор
Эксперт С++
13710 / 10910 / 6476
Регистрация: 18.12.2011
Сообщений: 29,133
24.02.2022, 12:13 2
Лучший ответ Сообщение было отмечено Unomuno как решение

Решение

setlocale меняет кодировку только для вывода. Ввод остается в 866 кодировке.
Я вместо этой функции использую
C++
1
system("chcp 1251");
и шрифт консоли должен быть "Lucida console"
0
6 / 5 / 2
Регистрация: 05.10.2021
Сообщений: 380
24.02.2022, 13:07  [ТС] 3
Заработало, спасибо)
0
24.02.2022, 13:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.02.2022, 13:07
Помогаю со студенческими работами здесь

GridView Select не отображается на русском
На русской винде пишу сайт выгладываю на IIS, где установленна английская винда. На страничке...

Не отображается заголовок письма на русском
Здравствуйте. Во всех письмах, не отображается русские буквы, но в самом письме всё нормально...

Найти корни квадратического уравнения(в русском не силен, мог неправильно написать)
program r1; uses crt; var a,b,c,d,x1,x2:real; begin write('vvedit a'); readln(a);...

При просмотре сайта не отображается на русском информация,а ввиде кракозябр
При просмотре сайта не отображается на русском информация,а ввиде кракозябр... Кто сталкивался?...

Неправильно отображается
Есть три параллелепипеда, которые вращаются, и возникает проблема. В одном и том же месте...


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

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