Problem beim Auslesen von einer File



  • Hallo, ich habe mal wieder ein Problem beim Auslesen einer File.
    Ich lasse dabei eine Suche nach einem bestimmten (vorher eingegebenen Datensatz) durchführen, wo dann die Position in der Variable zeile abgespeichert wird. Das Programm liest 4x relativ gleichartige Daten ohne Probleme, jedoch beim 5. Aufruf ergibt sich das Problem, dass es sich bei dem Codestück eingabe>>rein[i]; aus irgendeinem mir unerfindlichen Grund um 2 Teilstrings verschiebt, was für mich irgendwie Kopfzerbrechen bereitet, warum.
    Hier einmal der Code, falls ihr den Fehler findet, warum es sich so verschiebt, bitte helft mir!!
    Thx

    int k;
        bool found = false;
        eingabe.clear();
        eingabe.seekg(0,ios::beg);
         for(k = 0;!eingabe.eof();k++)
         {
                 eingabe.getline(in,300,'\n');
                 found=suche();
                 if(found==1)
                 {
                             if(aufrufe==0)
                             {
                                           for(int i = 0;i<=strlen(in);i++) eingabe.unget();
                                           for(int i = 0;i<length+x;i++)
                                           {
                                                   eingabe>>rein[i];
                                            }
                                           aufrufe++;
                                           break;
                             }
                             else if(aufrufe>0&&k>zeilen)
                             {
                                  for(int i = 0;i<=strlen(in);i++)
                                  {
                                          eingabe.unget();
                                  }
                                  for(int i = 0;i<length+x;i++) 
                                  {
                                          eingabe>>rein[i];
                                  }
                                  break;
                             }
                 }
         }
         zeilen=k;
    


  • Oder kann ich mit seekg beispielsweise auch zeilenweise zurücklesen, also, dass ich net nach ios::beg geh, sondern an eine abzählbare Position)



  • Vorden schrieb:

    Oder kann ich mit seekg beispielsweise auch zeilenweise zurücklesen, also, dass ich net nach ios::beg geh, sondern an eine abzählbare Position)

    Mit seekq kannst du überallhin gehen.
    zb: seekg(10,ios::beg); zum 10.Zeichen vom anfang
    oder seekg(-10, ios::cur ); 10 zeichen zurück
    Kurt



  • kewl, danke, wird mir wahrscheinlich helfen, weil ich könnte dann bei mir quasi ja

    eingabe.getline(x,100,'\n');
    //Hier der Code von oben und dann
    eingabe.seekg(-(strlen(x)),ios::curr);
    

    dann müsste quasi der zeiger wieder am anfang der zeile/am ende der letzten stehen, oder?



  • Musst du ausprobieren. Wenn die Datei im textmode geöffnet wird gibt's da Probleme mit '\n' das ja bei unix nur ein bei Windows aber 2 Zeichen sind.
    Kurt



  • Wenn ich ios::curr verwende, bekomme ich folgende Fehlermeldung:
    'curr' is not member of 'std::ios' . Jedoch wäre für mich der Code eigentlich recht wichtig.
    Btw Compiler ist Dev-C++.



  • Vorden schrieb:

    Wenn ich ios::curr verwende, bekomme ich folgende Fehlermeldung:
    'curr' is not member of 'std::ios' . Jedoch wäre für mich der Code eigentlich recht wichtig.
    Btw Compiler ist Dev-C++.

    Es heißt std::ios::cur. (mit einem 'r')

    Caipi



  • axo, k


Anmelden zum Antworten