Programm mit seekg



  • Hallo hier wird die Funktion seekg beschrieben:

    http://www.cplusplus.com/reference/iostream/istream/seekg/

    Wie kann ich den jetzt überprüfen ob die Funktion erfolgreich ausgeführt wurde oder nicht.

    Auf cplusplus.com steht: The function returns *this. (Hab ich auch nicht ganz verstanden was das heissen soll)

    Und ich hab noch gelesen:

    Additionally, in any of these cases, if the appropriate flag has been set with member function ios::exceptions, an exception of type ios_base::failure is thrown.

    http://www.cplusplus.com/ios::exceptions

    Ich hab versucht das mal umzusetzen aber leider ohne Erfolg:

    file.exceptions ( fstream::eofbit | fstream::failbit | fstream::badbit | fstream::goodbit );
      try 
      {
    	 file.seekg( 0x14B5 ,ios::beg);
    
      }
    
      catch (ifstream::failure e) 
      {
        cout << "Exception";
      }
    

    Das verursacht eine: Abnormal program termination



  • Das bedeutet, dass die Funktion den Stream selbst zurückgibt. Da Streams nach bool konvertierbar sind, kannst du schreiben:

    if(stream.seekg(...))
        // tu was
    

    Es ist übrigens normalerweise keine gute Idee, Exceptions an den Streams anzumachen. Die Texte sind nämlich meist nicht besonders hilfreich. Schmeiß lieber deine eigene Exception mit einer besseren Beschreibung.


Anmelden zum Antworten