0

重複の可能性:
ファイル C++ を読み取るときに getline と >> を使用する

struct collection
{
    string title, author, isbn;
    float price;
    bool availability;
    int borrow;
};
void read1(member a[]);
void read2(collection b[]);
int main()
{
    member a[20];
    collection b[100];
    read1(a);
    read2(b);

}

これは私が実行しようとしている機能です。最初は問題なく実行されますが、2 回目の getline では本のタイトルが読み取られず、スキップされます。その後、2 番目の getline でそれを読み取ります。

void read2(collection b[])
{
ifstream database;
string n1;
cout << "Enter second input file name: ";
getline(cin, n1);
database.open(n1.c_str());
if(database.fail())
{
    "Bad file. \n" ;
}
else
{
    for(int j=0;!database.eof();j++)
    {
        getline(database, b[j].title);
        cout << b[j].title<<endl;
        getline(database,b[j].author);
        cout<<b[j].author<<endl;
        database>>b[j].isbn;
        cout<<b[j].isbn<<endl;
        database>>b[j].price;
        cout<<b[j].price<<endl;
        database>>b[j].availability;
        cout<<b[j].availability<<endl;
        database>>b[j].borrow;
        cout<<b[j].borrow;
    }
    database.close();
}   
}            
4

1 に答える 1

0

最初に、失敗ビットまたは不良ビットがオンになっているかどうかを簡単に確認します。失敗ビットがオンになっていると、ファイル ストリームが読み取り操作を実行できなくなる可能性があるためです。文字列を誤って整数に読み込もうとしている可能性があります。これは、たとえば、失敗ビットを発生させます。

于 2012-12-03T16:40:54.573 に答える