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

Ввод с cin с пробелами - C++

19.04.2016, 20:13. Просмотров 1644. Ответов 12
Метки нет (Все метки)

Здравствуйте!
Делаю стандартное задание по структурам.
Пока сделано только добавление и показ всего.
Но вот проблемка. Если название фильма состоит из более чем 1 слова то начинаются проблемы. 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
100
101
#include<iostream>
#include<string.h>
#include <Windows.h>
using namespace std;
 
 
struct videoshop
{
    char name[30];
    char directed[30];
    char genre[30];
    double rating;
    double price;
} F[100] = {{"Дэдпул", "Тим Миллер", "фантастика", 7.8, 100 },
                       {"Зверополис", "Рич Мур", "комедия", 8.7, 150},
                        {"Пятая волна", "Дж.Блэйксон", "триллер", 6.1, 80},
                        {"Боги Египта", "Алекс Пройас", "боевик", 7.5, 130}};;
int dobav();
int show();
 
int main()
{
    setlocale(LC_ALL,"rus");
    SetConsoleCP(1251); 
    SetConsoleOutputCP(1251);
    int select_1;
    do
    {
    int select;
    cout<< "Выберете нужный Вам пункт меню"<<endl;
    cout<< "Поиск фильма по названию - 1"<<endl;
    cout<< "Поиск фильма по жанру - 2"<<endl;
    cout<< "Показать все - 3"<<endl;
    cout<< "Добавить запись - 4"<<endl;
    
    cin>>select;
    cout<<endl;
    
    switch(select)
    {
        char name[50], genre[50];
        case 1:
            cout<<"Введите название фильма:";
            cin>>name; 
            break;
        case 2:
            cout<<"Введите жанр фильма:";
            cin>>genre;
           
            break;
        case 3:
            show();
            break;
        case 4:
            dobav();
            break;  
    }
    cout<<"Показать меню - 1. Для выхода нажмите 0"<<endl;
    cin>>select_1;  
    }while(select_1!=0);  
    return 0;
}
int n = 3;//изначальное количество//
 
int dobav() //добавление новой записи//
{
 
    int temp;
    do
    {
        n++;
        cout<< "Введите название фильма"<<endl;
        cin>>F[n].name;
        cout<< "Введите режиссера данного фильма"<<endl;
        cin>>F[n].directed;
        cout<<"Введите жанр:"<<endl;
        cin>>F[n].genre;
        cout<<"Введите рейтинг фильма"<<endl;
        cin>>F[n].rating;
        cout<<"Введите цену"<<endl;
        cin>>F[n].price;
        cout<<"Для добавления записи нажмите 1.Для выхода нажмите 0";
        cin>>temp;
    }while(temp!=0);
    
}
 
int show() //показать все записи//
{
for(int i(0);i<=n;i++)
    {
    cout<<"Название фильма:" <<F[i].name<<endl;
    cout<<"Режиссер фильма:" <<F[i].directed<<endl;
    cout<<"Жанр фильма:" <<F[i].genre<<endl;
    cout<<"Рейтинг фильма:" <<F[i].rating<<endl;
    cout<<"Цена фильма:" <<F[i].price<<endl; 
    cout<<endl;
 
 
    }
}

http://www.cyberforum.ru/cpp-beginners/thread1238614.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2016, 20:13
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ввод с cin с пробелами (C++):

Как работает cin.peek, cin,get, cin.ignore, cin.clear?
Здравствуйте, товарищи и не товарищи!:) Я только начал изучать C++, а уже...

Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync
Доброго времени суток. На С++ учусь с недавних пор. Имеется стандартная &quot;защита...

Объясните пожалуйста как работают cin.good(), cin.sync(), cin.clear()
Такая проблема: сдаю в вуза лабораторные по программированию, писал все сам, до...

Ввод cin
Я тут раньше задавал подобный вопрос, то тема умерла, по ходу. Здесь приведен...

Корректный ввод с cin
Пусть в программе есть оператор cin &gt;&gt; n, где n типа int, а пользователь вводит...

12
nmcf
6237 / 5549 / 2524
Регистрация: 14.04.2014
Сообщений: 23,337
19.04.2016, 20:14 #2
cin.getline()
0
vanek26
0 / 0 / 0
Регистрация: 15.04.2016
Сообщений: 7
19.04.2016, 20:33  [ТС] #3
можно подробней?а то чтот компилятор ругается.возможно не так ввожу аргументы
0
obivan
Падаван С++
419 / 239 / 82
Регистрация: 11.11.2014
Сообщений: 842
Завершенные тесты: 2
19.04.2016, 20:37 #4
vanek26, аргументы буфер и его размер
0
nmcf
6237 / 5549 / 2524
Регистрация: 14.04.2014
Сообщений: 23,337
19.04.2016, 20:38 #5
vanek26, это же совсем примитивно.
C++
1
cin.getline(name, 50);
0
Siplbl
0 / 0 / 2
Регистрация: 10.12.2015
Сообщений: 18
19.04.2016, 20:46 #6
через gets() можно.
Только перед gets вставляй getchar()
0
nmcf
6237 / 5549 / 2524
Регистрация: 14.04.2014
Сообщений: 23,337
19.04.2016, 20:52 #7
Siplbl, gets() - это по-древнему, в стиле C.
0
vanek26
0 / 0 / 0
Регистрация: 15.04.2016
Сообщений: 7
19.04.2016, 21:21  [ТС] #8
nmcf,
вместо
C++
1
cin>>F[n].name;
ставлю
C++
1
cin.getline(F[n].name,50);
первое слово "съедается"
почему-то
0
nmcf
6237 / 5549 / 2524
Регистрация: 14.04.2014
Сообщений: 23,337
19.04.2016, 21:52 #9
Лучший ответ Сообщение было отмечено vanek26 как решение

Решение

Вот такие конструкции:
C++
1
cin>>select;
снабдить get()
C++
1
(cin>>select).get();
1
vanek26
0 / 0 / 0
Регистрация: 15.04.2016
Сообщений: 7
19.04.2016, 22:12  [ТС] #10
nmcf, ух ты!!спасибо работает отлично!!
Я правда так и не понял связь "селекта" со всем этим.
0
nmcf
6237 / 5549 / 2524
Регистрация: 14.04.2014
Сообщений: 23,337
19.04.2016, 23:00 #11
После "cin >>" остаётся символ '\n' в потоке и мешает работать getline().
0
Mightsoul
9 / 9 / 14
Регистрация: 09.01.2018
Сообщений: 45
Завершенные тесты: 3
09.07.2018, 00:00 #12
Есть более простой и эффективный способ, не требующий размера строки.
C++
1
getline(std::cin, название_переменной);
0
nmcf
6237 / 5549 / 2524
Регистрация: 14.04.2014
Сообщений: 23,337
09.07.2018, 19:30 #13
Mightsoul, это для string.
0
09.07.2018, 19:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2018, 19:30
Привет! Вот еще темы с решениями:

Игнорирует ввод cin
Не могу понять почему не считывает переменную 'q' в 13 строке. Программа просто...

ввод данных cin >>
Приветствую! #include &lt;iostream&gt; using namespace std; int main()...

Ввод текста по cin
Доброго времени суток. имею следующий код: OpenAsper oAsper;...

Ввод уравнения через cin
Здравствуйте, столкнулся с проблемой. Нужно ввести значения х_min = pi/5, x_max...


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

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

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