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

не работает getline - C++

Восстановить пароль Регистрация
 
amor1k
Студент
 Аватар для amor1k
147 / 147 / 24
Регистрация: 18.01.2011
Сообщений: 469
17.12.2011, 19:09     не работает getline #1
Есть код (писал не я), но не могу понять, почему getline() игнорируется в строке 72. Сначала не работало в функции класса, потом решил сделать так, как в этом коде, но без толку...
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <C:\main.h>
 
class School
{
    string name;
    int number;
    int stage;
    int amounts_students;
    int budget;
    string adress;
    static int countOfSchool;
public:
    School() { budget = 15000; countOfSchool++; number = 0; name = ""; adress = ""; }
    void Open_School(string name, string adress);
    void Delete_School();
    int Lower_stage(int new_stage);
    int Get_money();
    int Get_count();
    void Get_info();
    int Get_number();
};
 
int School::countOfSchool = 0;
int School::Get_count()
{
    return countOfSchool;
}
void School::Open_School(string name, string adress)
{
    cout << "Введите номер школы: "; cin >> this->number;
    cout << "\nВведите начальную ступень: "; cin >> this->stage;
    
}
void School::Delete_School()
{
    name = "";
    number = 0;
    stage = 0;
    adress = "";
}
void School::Get_info()
{
    cout << "Имя: " << name << endl;
    cout << "Номер: " << number << endl;
    cout << "Ступень: " << stage << endl;
    cout << "Адрес: " << adress << endl;
}
int School::Get_number()
{ 
    return number;
}
 
int main()
{
    setlocale(0,"");
    School *s;
    string name, adress;
    int n = 1, num, choice, j = 0;
    while(1)
    {
        system("cls");
        cout << "1. Добавить школу" << endl;
        cout << "2. Добавить ученика в школу" << endl;
        cout << "3. Убрать школу" << endl;
        cout << "4. Показать школу" << endl;
        cin >> choice;
        switch(choice)
        {
        case 1:
            system("cls");
            cout << "Введите bvz: ";
            getline(cin,name);
            s = new School[n];
            s[j].Open_School(name, adress);
            s[j].Get_info();
            cout << "Школа добавлена!" << endl;
            j++;
            _getch();
            break;
        case 3:
            system("cls");
            cout << "Введите номер школы: ";
            cin >> num;
            for(int i = 0; i < s[n].Get_count(); i++)
            {
                if(s[i].Get_number() == num)
                    s[i].Delete_School();
            }
            cout << "Школа уничтожена!";
            _getch();
            break;
        case 4:
            system("cls");
            cout << "Введите номер школы: ";
            cin >> num;
            for(int i = 0; i < s[n].Get_count(); i++)
            {
                if(s[i].Get_number() == num)
                    s[i].Get_info();
            }
            _getch();
            break;
        }
    }
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2011, 19:09     не работает getline
Посмотрите здесь:

Не работает getline(); C++
не работает getline C++
C++ Не работает getline()
Не работает getline() C++
не работает getline C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
17.12.2011, 19:14     не работает getline #2
может на предыдущей строке надо было перенос поставить?
amor1k
Студент
 Аватар для amor1k
147 / 147 / 24
Регистрация: 18.01.2011
Сообщений: 469
17.12.2011, 19:19  [ТС]     не работает getline #3
Если так
C++
1
cout << "Введите bvz: \n";
то ничего, все также.
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
17.12.2011, 19:23     не работает getline #4
C++
1
std::cin.get();
добавь перед
C++
1
std::getline(std::cin, name);
amor1k
Студент
 Аватар для amor1k
147 / 147 / 24
Регистрация: 18.01.2011
Сообщений: 469
17.12.2011, 19:27  [ТС]     не работает getline #5
благодарю, теперь нормально
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
17.12.2011, 19:38     не работает getline #6
Добавь перед getline
C++
1
cin.ignore (256,'\n');
Добавлено через 1 минуту
Цитата Сообщение от sandye51 Посмотреть сообщение
добавь перед
А если не только '\n' в буфере остались?
Yandex
Объявления
17.12.2011, 19:38     не работает getline
Ответ Создать тему
Опции темы

Текущее время: 15:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru