Я делаю программу на C ++ для работы с книгами. Пользователь должен вставить название, цену и объем для 3 книг. Я не включаю класс Book
в код, так как он не имеет отношения к моей проблеме.
Я застрял в том месте, где пользователю нужно ввести значения внутри цикла. Когда я тестирую программу, консоль продолжает глючить в случайное время. (то есть вместо полного предложения оно показывает "Give book p"
и ожидает ввода).
Я прочитал в других ответах, что я должен использовать cin.ignore()
после каждого cin>>
вызова, чтобы игнорировать \n
, который помещается в поток, когда пользователь нажимает enter, но это не решает мою проблему?
Есть идеи, что я делаю не так?
#include <iostream>
#include <sstream>
using namespace std;
int main() {
string title;
double price;
int volumes;
for (int i=0; i<3;i++){
cout << "Give book title : " << endl;
getline (cin, title);
cout << "Give book price : " << endl;
cin >> price;
cin.ignore();
cout << "Give number of volumes : " << endl;
cin >> volumes;
cin.ignore();
}
return 0;
}
Ниже приведен пример консоли:
Give book title :
The Hobbit
The Hobbit
Give book price :
12.5
12.5
Give number of volumes :
10
10
Give book title :
Lord of the Rings
Lord of the Rings
Give book price :
12
12
Give number of volumes :
7
7
Give bo
Как видите, последнее предложение обрезается, а консоль застревает после.