Llooyyddiiee Kun Ответов: 1

Я запутался в использовании cin и cout внутри выделения


   #include<iostream>
#include<stdio.h>
#include<cstring>
#include<string>
using namespace std;
void printBook(struct Books book);
void printBorrower(struct borrower borrow);

struct Books
{
	char title[50];
	char author[50];
	char subject[50];
	int book_id;
};
struct borrower
{
	char name[50];
	char course[50];
	int year;
	int id;
};
int main()
{

 Books b1;
 borrower person;
	char opt;

do
{
	cout<<"Enter opt: ";
	cin>>opt;
	if(opt=='A')
	{
	cout<<"Enter Book title: ";
	cin.getline(b1.title,50);
	cout << "Enter Book author: ";
	cin.getline(b1.author,50);
	cout << "Enter Book subject: ";
	cin.getline(b1.subject,50);
	cout << "Enter Book ID: ";
	cin >> b1.book_id;
	}
	else if(opt=='B')
		{
	cout<<"Enter the borrower's name: ";
	cin.getline(person.name, 50);
	cout<<"Enter the borrower's course: ";
	cin.getline(person.course, 50);
	cout<<"Enter the borrower's year level: ";
	cin>>person.year;
	cout<<"Enter the borrower's ID : ";
	cin>>person.id;
		}
	else
		{
		printBook(b1);
		
	//Print Borrower
		printBorrower(person);
		}
}while(opt!='Y');
system("pause");
}

void printBook(struct Books book)
{
	cout<<"Book title: "<<book.title<<endl;
	cout<<"Book author: "<<book.author<<endl;
	cout<<"Book subject: "<<book.subject<<endl;
	cout<<"Book ID : "<<book.book_id<<endl;
}

void printBorrower(struct borrower borrow)
{
	cout<<"Borrower's name: "<<borrow.name<<endl;
	cout<<"Borrower's course: "<<borrow.course<<endl;
	cout<<"Borrower's year: "<<borrow.year<<endl;
	cout<<"Borrower's ID : "<<borrow.id<<endl;
}      


Что я уже пробовал:

Я попытался выполнить код, но тогда я не могу ввести первый оператор в каждом варианте, если я введу вариант а, он будет показывать только "введите название книги: введите автора книги:" и я не могу ввести что-либо для 1-й строки, то же самое относится и к варианту в, что-то не так с моим кодом? Существует ли ограничение на количество операторов cin и cout внутри одного выбора? Пожалуйста, помогите мне. Спасибо.

[no name]

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

jeron1

Попробуйте добавить
Кин.вам();
звоните после ввода опт.

1 Ответов

Рейтинг:
0

Albert Holguin

С помощью cin>> с последующим cin.getline() может привести вас к мысли, что getline () чего-то не хватает:
Советы и рекомендации по использованию ввода-вывода C++ (ввод-вывод)[^]