62 / 62 / 39
Регистрация: 18.11.2016
Сообщений: 562
1

При множественном наследовании не работает getline(std::cin, ?)

12.03.2017, 19:47. Показов 621. Ответов 1
Метки нет (Все метки)

Изучаю множественное наследование, так вот, нужно ввести два слова, но программа просто пропускает
C++
1
getline (std::cin, ?)
Когда так при обычной
C++
1
std::cin >> ?
все работает нормально.
Пример кода:
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
#include <iostream>
#include <stdlib.h>
#include <Windows.h>
#include <iomanip>
#include <string>
#include <iostream>
 
class education{
private:
    std::string edu;
    std::string step;
 
public:
 
    void set_education (){
        std::cout << "Название учебного заведения: ";
        std::cin >> edu;
        std::cout << "Уровень образования: ";
        std::cin >> step;
    }
 
 
    void get_education () const {
        std::cout << "Учебное заведение: " << edu << std::endl;
        std::cout << "Уровень образования: " << step << std::endl;
    }
};
 
class personal{
private:
    std::string name;
    std::string status;
    unsigned long phone;
public:
 
    void set_personal(){
        std::cout << "Ф.И.0: ";
        getline(std::cin, name);
        std::cout << "Должность: ";
        getline (std::cin, status);
        std::cout << "Телефон: ";
        std::cin >> phone;
    }
 
    void get_personal () const {
        std::cout << "Ф.И.О: " << name << std::endl;
        std::cout << "Должность: " << status << std::endl;
        std::cout << "Телефон: " << phone << std::endl;
    }
};
 
 
class manager : private personal, private education {
private:
    std::string work;
public:
    void set_values (){
        personal::set_personal();
        education::set_education();
        std::cout << "Выполняемая работа: ";
     // getline(std::cin, work); При использовании getline, программа просто пропускает и все.
        std::cin >> work;
    }
 
 
    void get_values () const {
        personal::get_personal();
        std::cout << "Вид работы: " << work << std::endl;
        education::get_education();
    }
 
 
};
 
class workers : private manager{
private:
    std::string example;
public:
 
    void set (){
        example = "EXAMPLE";
        manager::set_values();
        std::cout << example << std::endl;
        manager::get_values();
    }
};
 
int main (){
 
        SetConsoleCP (1251);
        SetConsoleOutputCP (1251);
 
        workers man;
        man.set ();
 
 
        system ("pause");
        return 0;
    }
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.03.2017, 19:47
Ответы с готовыми решениями:

Почему при использовании getline( std::cin, str ) строка считывается не так, как ожидается?
Цель программы: При вводе строки, подсчитывает количество гласных букв. Проблема: При вводе...

Локаль в std::cin.getline (вижуал с++)
собственно выводит в консоль нормально, а вот после считывания с консоли в символьный массив...

Cin.getline() не работает при динамическом выделении памяти
Почему в таком коде cin.getline() работает не так как надо? Если очистить поток, то будет все...

Не работает cin.getline при считывании строки большей буфера
Доброго всем времени суток!:) Проблема состоит в том, что если ввести 4 и более символов...

1
Mental handicap
1245 / 623 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
12.03.2017, 19:57 2
Попробуйте очистить входной поток, если вы чередуете использование cin и getline, то после записи через cin могут остаться несчитанные символы, в том числе и символы перевода строки

Добавлено через 57 секунд
C++
1
std::cin.ignore();
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.03.2017, 19:57

Инициализация при множественном наследовании
Имеется иерархия типов. Во главе: базовый класс-интерфейс, далее один базовый класс, от него два...

Неоднозначность при множественном наследовании
Привет всем, столкнулся с проблемой при множественном наследовании классов. Надеюсь, кто-нибудь...

Конструктор при множественном наследовании
#include &lt;string&gt; class Worker // an abstract base class { private: std::string...

Конструкторы с параметрами при множественном наследовании
у меня есть класс, quotes который является базовым для двух классов moving_average и rsi...


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

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

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