c ++,如何修复两次显示的最后一节?

时间:2014-09-15 09:03:54

标签: c++

在下面的代码中我得到一个我无法摆脱的错误。 exe显示了最后一节两次。我怎样才能解决这个问题? (文件包含以下格式的文本:1;名称; 1;名称2; 2 \ n 1;名称2; 1;名称3; 2

void WZ(string nazwa)
{
std::fstream plik;
plik.open( nazwa.c_str() );
while( true )
{
if( plik.good() )
    {
        int oferta;
        string dane;
        int ilosc;
        string koszyk;
        int status;
        int licznik=0;
        for(int a=0; a<5;a++)
        {
            plik>>oferta;
            plik.ignore( numeric_limits < streamsize >::max(), ';' );
            plik>>dane;
            plik.ignore( numeric_limits < streamsize >::max(), ';' );
            plik>>ilosc;
            plik.ignore( numeric_limits < streamsize >::max(), ';' );
            plik>>koszyk;
            plik.ignore( numeric_limits < streamsize >::max(), ';' );
            plik>>status;
            licznik++;
            cout<<oferta<<dane<<ilosc<<koszyk<<status<<"licznik: "<<licznik<<endl;
        }
    }
    else
    {
        break; //zakoñcz wczytywanie danych - wyst¹pi³ jakiœ b³¹d (np. nie ma wiêcej danych w pliku)
    }
}
}

1 个答案:

答案 0 :(得分:0)

从文件中读取变量后,应检查plik-&gt; fail()。 EOF在读取之后才会声明。文件的“可用结束”与EOF不同。