Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Problem mit ifstream

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
20.05.2006, 14:38 Uhr
Steffen



Hallo,

ich habe folgende Prolem, und zwar wird an den im Code mit Ausrufezeichen makierten Stellen etwas aus einer Datei eingelesen. Beim ersten mal klappt es Problemlos, dann wird der Stream geschlossen und wieder geöffnet. Jetzt das gleiche nochmal aus der Datei eingelesen werden (zweites mal mit AUsrufezeichen makiert), mit den gleichen Abbruchkriterien, und es geht nicht mehr. Bin so langsam am verzweifeln, da ich den Fehler nicht finde!! Woran könnte es liegen ?

Vielen Dank für jede Hilfe


C++:
....
int main(int argc, char * argv[])
{
    ifstream source (argv[1]);
    ofstream outfl("outList.txt");
    ofstream outfa("outArray.txt");
    ofstream outfll("outList1.txt");
    ofstream outfaa("outArray1.txt");
    if (!source)
    {
        cout << "kann " << argv[1] << " nicht oeffnen \n";
        exit (1);
    }
    if (!outfl)
    {
        cout << "kann outList.txt nicht oeffnen \n";
        exit (1);
    }
    if (!outfa)
    {
        cout << "kann outArray.txt nicht oeffnen \n";
        exit (1);
    }
    if (!outfll)
    {
        cout << "kann outList1.txt nicht oeffnen \n";
        exit (1);
    }
    if (!outfaa)
    {
        cout << "kann outArray1.txt nicht oeffnen \n";
        exit (1);
    }

    int i;
    ListPriorityQueue ql;
    ArrayPriorityQueue qa;
    cout << "Fuelle ListPriorityQueue"<<endl;
    
     // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // Hier gehts

    while(source >> i)
    {
        ql.enqueue(i);
    }
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    cout << "Fuelle ListPriorityQueue gefuellt"<<endl;

    ListPriorityQueue qll = fl(ql);
    cout << "Leere ListPriorityQueue"<<endl;
    
    try
    {
        while ( true )
        {
            i = ql.dequeue();
            outfl << " " << i;
        }
    } catch(QueueEmptyEx e) {}

    outfl << endl;
    cout << "ListPriorityQueue leer"<<endl;
    cout << "Leere qll"<<endl;
    
    try
    {
        while ( true )
            {
                i = qll.dequeue();
                outfll << " " << i;
            }
    } catch(QueueEmptyEx e) {}
    
    outfll << endl;
    cout << "qll leer"<<endl;
    source.close();
    source.open( argv[1] );
    cout << "Fuelle ArrayPriorityQueue"<<endl;
    
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   // Hier geht er nicht mehr in die Schleife rein!!

    while(source >> i)
    {
        qa.enqueue(i);
    }
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    cout << "ArrayPriorityQueue gefuellt"<<endl;
    ArrayPriorityQueue qaa = fa(qa);
    cout << "Leere ArrayPriorityQueue"<<endl;
    
    try
    {
        while ( true )
        {
            i = qa.dequeue();
            outfa << " " << i;
        }
    } catch(QueueEmptyEx e) {}

    outfa << endl;
    cout << "ArrayPriorityQueue leer"<<endl;
    cout << "Leere qaa"<<endl;
    
    try
    {
        while ( true )
        {
            i = qaa.dequeue();
            outfaa << " " << i;
        }
    } catch(QueueEmptyEx e) {}

    outfaa << endl;
    cout << "qaa leer"<<endl;
}

ListPriorityQueue fl(ListPriorityQueue ql)
{
    ListPriorityQueue qql = ql;

    try
    {
        for ( int i=0; i<10; ++i)
            ql.dequeue();
    } catch (QueueEmptyEx) {}

    return qql;
}

ArrayPriorityQueue fa(ArrayPriorityQueue qa)
{
    ArrayPriorityQueue qqa = qa;
    
    try
    {
        for ( int i=0; i<10000; ++i)
            qa.dequeue();
    } catch (QueueEmptyEx) {}

    return qqa;
}


Dieser Post wurde am 20.05.2006 um 14:43 Uhr von Steffen editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.05.2006, 14:57 Uhr
Spacelord
Hoffnungsloser Fall


Hi,
das eof Statusflag überdauert dein close und macht den stream unbrauchbar.
Setz mal vor das source.open nen source.clear().

Gruss Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.05.2006, 15:15 Uhr
Steffen



Tausend dank Spacelord!

Es funktioniert....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: