我们在c ++中有一个作业,其中我们有关于多本书(作者姓名,标题,出版商等)的商店信息。
在获取书名或作者姓名的同时,我尝试使用函数getline()以句子的形式接受输入,但在执行时它并没有问我标题(我打算用它)而不是它直接问我作者的名字。
这是代码:
#include<iostream>
using namespace std;
class BookInfo
{
public:
string title,author,publisher;
int price,stock_position;
};
class Books
{
BookInfo b[10];
int no_of_books;
public:
void getdata()
{
cout<<"Enter the number of books: ";
cin>>no_of_books;
for(int i = 0 ; i < no_of_books ; i++)
{
cout<<"Title: ";
getline(cin,b[i].title,'\n');
cout<<"Author: ";
getline(cin,b[i].author,'\n');
cout<<"Publisher: ";
getline(cin,b[i].publisher,'\n');
cout<<"Price: ";
cin>>b[i].price;
cout<<"Stock Position: ";
cin>>b[i].stock_position;
}
}
};
int main(void)
{
Books a;
a.getdata();
}
这是输出:
输入图书数量:1
标题:作者:
答案 0 :(得分:0)
这是因为发送到第一个getline的换行符。在cin.get()
之后添加cin>>no_of_books;
应该修复它。
答案 1 :(得分:0)
cin>>no_of_books
不会消耗\n
。
所以你的下一个getline
会占用现在的空行。