0 / 0 / 0
Регистрация: 15.03.2018
Сообщений: 28
1

Ввод строки с пробелами

29.10.2019, 17:49. Показов 2381. Ответов 2
Метки нет (Все метки)

Мне необходимо ввести несколько слов в строку, использую getline, но в консоле когда в меню выбираешь ввести, то все просто проскакивает. Не могу понять в чем проблема, помогите пожалуйста
Cargo_carrier.h
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#pragma once
#include <iostream>
#define _CRT_SECURE_NO_WARNINGS
 
using namespace std;
 
class Cargo_Carrier
{
private:
    string type; //тип самолета
    string name; //наименование самолета, поезда
    string cargo_volume; //объем перевозимого груза
    string dimension; //габариты груза
    string visit_sities; //какие города посещает самолет
    string release_year; //год выпуска поезда, машины
    string route; //полный маршрут следования поезда
    string kolvo_railcars; //количество вагонов
    string brand; //марка машины
    string model; //модель машины
    string delivery_sities; //в какие города осуществляется доставка
    string number_of_hours; //количество часов доставки для каждого города
public:
    Cargo_Carrier() {};
    virtual ~Cargo_Carrier() {};
    virtual void Add(string data) = 0;
    virtual void Show() = 0;
//  virtual void Read() = 0;
//  virtual void Dell() = 0;
    void Set_type(string t)
    {
        type = t;
    }
    void Set_name(string n)
    {
        name = n;
    }
    void Set_cargo_volume(string cv)
    {
        cargo_volume = cv;
    }
    void Set_dimension(string d)
    {
        dimension = d;
    }
    void Set_visit_sities(string vs)
    {
        visit_sities = vs;
    }
    void Set_release_year(string ry)
    {
        release_year = ry;
    }
    void Set_route(string r)
    {
        route = r;
    }
    void Set_kolvo_railcars(string kr)
    {
        kolvo_railcars = kr;
    }
    void Set_brand(string b)
    {
        brand = b;
    }
    void Set_model(string m)
    {
        model = m;
    }
    void Set_delivery_sities(string ds)
    {
        delivery_sities = ds;
    }
    void Set_number_of_hours(string noh)
    {
        number_of_hours = noh;
    }
    string Get_type()
    {
        return type;
    }
    string Get_name()
    {
        return name;
    }
    string Get_cargo_volume()
    {
        return cargo_volume;
    }
    string Get_dimension()
    {
        return dimension;
    }
    string Get_visit_sities()
    {
        return visit_sities;
    }
    string Get_release_year()
    {
        return release_year;
    }
    string Get_route()
    {
        return route;
    }
    string Get_kolvo_railcars()
    {
        return kolvo_railcars;
    }
    string Get_brand()
    {
        return brand;
    }
    string Get_model()
    {
        return model;
    }
    string Get_delivery_sities()
    {
        return delivery_sities;
    }
    string Get_number_of_hours()
    {
        return number_of_hours;
    }
 
};
Plane.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#pragma once
#include <iostream>
#include "Cargo_carrier.h"
 
using namespace std;
 
class Plane :public Cargo_Carrier
{
public:
    Plane() {};
    Plane(string t, string n, string cv, string d, string vs);
    void Add(string data) override;
    void Show() override;
    //void Read() override;
    //void Dell() override;
};
Plane.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
#include <iostream>
#include <locale>
#include <string>
#include <Windows.h>
#include "Plane.h"
 
using namespace std;
 
Plane::Plane(string t, string n, string cv, string d, string vs)
{
    Set_type(t);
    Set_name(n);
    Set_cargo_volume(cv);
    Set_dimension(d);
    Set_visit_sities(vs);
}
 
void Plane::Add(string data)
{
    setlocale(LC_ALL, "RUS");
    cout << "Введите тип самолета" << endl << ">";
    getline(cin, data);
    Set_type(data);
    cout << "Введите наименование самолета" << endl << ">";
    getline(cin, data);
    Set_name(data);
    cout << "Введите объем груза, тонн" << endl << ">";
    getline(cin, data);
    Set_cargo_volume(data);
    cout << "Введите габариты груза (_х_х_)" << endl << ">";
    getline(cin, data);
    Set_dimension(data);
    cout << "Введите города, которые посещает самолет" << endl << ">";
    getline(cin, data);
    Set_visit_sities(data);
}
 
void Plane::Show()
{
    cout << "Тип самолета" << " " << Get_type() << endl;
    cout << "Наименование:" << " " << Get_name() << endl;
    cout << "Объем груза:" << " " << Get_cargo_volume() << "тонн" << endl;
    cout << "Габариты груза:" << " " << Get_dimension() << endl;
    cout << "Города, посещаемые самолетом:" << " " << Get_visit_sities() << endl;
}
Main.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
#include <iostream>
#include <locale>
#include <string>
#include "Cargo_carrier.h"
#include "Plane.h"
 
using namespace std;
 
int main()
{
    Cargo_Carrier* edit;
    Plane* tmp = new Plane;
    edit = tmp;
    setlocale(LC_ALL, "RUS");
    string data;
    int value = 0;
    int number;
    do 
    {
        system("cls");
        cout << "1. Добавить информацию о самолете\n2. Показать информацию о самолете\n" << endl;
        cin >> number;
        switch (number)
        {
        case 1:
            edit->Add(data);
            break;
        case 2:
            edit->Show();
            system("pause");
            break;
        default: cout << "Выход" << endl;
            break;
        }
    } while (number != 3);
    system("pause");
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.10.2019, 17:49
Ответы с готовыми решениями:

Ввод строки с пробелами
Собственно вот текст, не хочет никакими функциями принимать строку stud.fio с пробелами, испробовал...

Ввод строки с пробелами
Нужна помощь!Как сделать так,чтобы после нажатия на пробел программа не заканчивала ввод в строку,а...

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

Ввод строки с пробелами
Знающие, помогите решить такую проблему. Надо составить маленькую программку, представление...

2
Модератор
Эксперт С++
12071 / 9754 / 5899
Регистрация: 18.12.2011
Сообщений: 26,184
29.10.2019, 18:15 2
Лучший ответ Сообщение было отмечено kruss802 как решение

Решение

Цитата Сообщение от kruss802 Посмотреть сообщение
все просто проскакивает
Распространенные ошибки
После ввода
Цитата Сообщение от kruss802 Посмотреть сообщение
cin >> number;
в буфере остался символ конца строки '\n'
после этого
Цитата Сообщение от kruss802 Посмотреть сообщение
getline(cin, data);
читает этот '\n' как пустую строку

Простейшее лечение
C++
1
(cin >> number).get();
1
0 / 0 / 0
Регистрация: 15.03.2018
Сообщений: 28
29.10.2019, 18:31  [ТС] 3
Спасибо большое
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.10.2019, 18:31
Помогаю со студенческими работами здесь

Ввод строки с пробелами
Всё, сдаюсь. Ребят, подскажите, пожалуйста, как строку с пробелами считать int main (){...

Ввод строки с пробелами
Я искал насчет этого в поиске и прочитал про get gets getline fgets, так и не понял. Кто то может...

Ввод строки char с пробелами
Всем доброго дня. Подскажите плз, У меня есть указатель char *str как ввести в него строку с...

Ввод строки с пробелами в поле char
Это часть файла header.h; В программе в поле Name нужно ввести ФИО с пробелами, но программа выдает...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru