Ввод в c++ (cin, getline)
Всем привет. Начал изучать с++ и столкнулся с проблемой, которую никак не могу решить. Вот моя программа:
#include <string>
#include <iostream>
using namespace std;
int main()
{
string command;
while(true)
{
cout<<"\nHi! This is a list of movies. What do you want?\n"
"enter \"add\" for add a new movie\n"
"enter \"search\" for search movies\n"
"enter \"change\" for change anything\n"
"enter \"exit\" for exit\n"<<endl;
cin>>command;
if(command == "exit")//CONDITION FOR EXIT FROM CYCLE
break;
if(command == "add")//CONDITION FOR ADD NEW ELEMENT
{
cout<<"\nenter name of movie\n"<<endl;
string entered_name;
getline(cin, entered_name);
cout<<"\nenter genre of movie\n"<<endl;
string entered_genre;
getline(cin, entered_genre);
cout<<"\nenter quantity of movie\n"<<endl;
int entered_quantity;
cin>>entered_quantity;
cout<<"\nenter number of movie\n"<<endl;
int entered_number;
cin>>entered_number;
}
}
return 0;
}
Итак, первая проблема: если я ввожу add, то я хочу чтобы программа предложила мне ввести значение для переменной entered_name, но этого не происходит. Вместо этого мне предлагается ввести значение для переменной entered_genre, а процесс ввода для entered_name просто пропускается. Я попробовал заменить cin>>command на getline(cin, command) и проблема исчезла, НО появилась другая: после того как я заканчиваю вводить данные о фильме(то есть ввожу значение переменной entered_number) я ожидаю, что программа выдаст сообщение "H1! this is a list of movies...". Она и выводит, только теперь почему-то два раза, вместо одного.
Вопрос: как сделать так, чтобы и ввод в переменную entered_name не пропускался и сообщение "H1! this is a list of movies..." выводилось только один раз?
Еще одна проблема заключается в том, что когда я произвожу ввод в переменные entered_quntity и entered_number, всё хорошо до того момента, пока я не попробую ввести хотя бы в одну из них не числа, а символы. Если я ,например, ввёл хотя бы в одну из них какой-нибудь символ, а не число, то программа просто начинает бесконечно выводить все cout'ы, которые есть в коде. Я знаю, что пытаюсь в переменную типа int занести символ, а не число, но я не понимаю реакцию на происходящее
Вопрос: почему просто начинают бесконечно выводится все cout'ы? Можно ли это как-то исправить?