如何在c ++中输入多个句子作为输入?

时间:2015-12-21 11:15:29

标签: c++ getline

我们在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

     

标题:作者:

2 个答案:

答案 0 :(得分:0)

这是因为发送到第一个getline的换行符。在cin.get()之后添加cin>>no_of_books;应该修复它。

答案 1 :(得分:0)

cin>>no_of_books不会消耗\n

所以你的下一个getline会占用现在的空行。