ifstream position anwählen?

TimN

Erfahrenes Mitglied
hi,
kann man in einem ifstream eigentlich auch eine Position genau anwählen, oder muss man alle Daten vorher auslesen?

Beispiel:
Datei test.asd: asdfghjklö
und mit meinem Programm will ich jetzt nur das "ghi" auslesen.
dazu könnte ich entweder

Code:
char *vorher = new char[4];
file.read(vorher, sizeof(char)*4);
char *ghi = new char[3]; 
file.read(ghi, sizeof(char)*3);

damit hätte ich jetzt "ghi" in der Variable ghi.
könnte ich das Ganze auch ohne die 1. beiden Zeilen machen?

(ach... bei der datei handelt es sich um eine binärdatei, falls das etwas ausmachen sollte)
 
moin


Das geht mit "seekg".
Code:
#include <iostream>
#include <fstream>

int main ( ) 
{
   using namespace std;
   ifstream file;
   char c, c1;

   file.open( "basic_istream_seekg.txt" );
   file.seekg(2);   // chars to skip
   file >> c;
   cout << c << endl;

   file.seekg( 0, ios_base::beg );
   file >> c;
   cout << c << endl;

   file.seekg( -1, ios_base::end );
   file >> c1;
   cout << c1 << endl;
}

mfg
umbrasaxum
 
Danke, funktioniert wunderbar.
Am Anfang kam zwar nciht das gewünschete Ergebniss, da der Kommentar
nicht ganz korrekt ist. man muss die absolute Position in der Datei angeben, nicht wieviele Zeichen von der aktuellen Position aus ausgelassen werden sollen.

Aber wie schon gesagt, jetzt funktioniert es wunderbar. Danke.

Tim
 
Zurück