Datei-Zugriff: Wahlfreier Zugriff

Bei den bisher vorgestellten Zugriffsarten auf Dateien hatte man keinen Einfluß darauf, an welche Stelle beim Lesen bzw. Schreiben aus bzw. in Dateien positioniert wird; es handelte sich um ein sequentielles Zugreifen auf die Daten der Dateien. Das sequentielle Abarbeiten von Dateien führt jedoch dazu, daß man etwa zum Einlesen eines bestimmten Datensatzes aus einer Datei alle vorherigen Daten, an denen man gar nicht interessiert ist, ebenfalls einlesen muß. Beim Schreiben hatte man nur die Möglichkeit, neue Daten ans Ende einer bereits existierenden Datei einzufügen bzw. die alte Datei beim Schreibzugriff zu löschen
Insbesondere bei der Verwaltung von Datensätzen wäre es daher wünschenswert, wenn man eine Möglichkeit zum direkten Positionieren in einer Datei hätte.

Neben dem sequentiellen Bearbeiten von Dateien gibt es auch in C++ die Möglichkeit, direkt an eine beliebige Stelle in einer Datei zu positionieren (auch wahlfreier Zugriff genannt). Alle iostream-Klassen stellen hierfür spezielle Funktionen bereit, die im folgenden beschrieben werden.
Für die Positionierung stehen die beiden Funktionen seekg() und seekp() zur Verfügung, wobei sowohl

möglich sind. Die Funktionen seekg() wie auch seekp() haben folgende Argumente:

  typedef long streampos;

  seekg( streampos pos, seek_dir dir = ios::beg );

An der Notation erkennt man bereits, daß das zweite Argument einen Default-Wert besitzt. Wird nur ein Parameter angegeben, so handelt es sich um eine absolute Positionierung.