Zum Inhalt springen

Zum Anfang einer Datei springen?!


Empfohlene Beiträge

Geschrieben

Habe mal wieder ein Problem zu dem ich keine Lösung finde:

Ich habe zB folgende Ausgangssituation:


string zeile;

ifstream datei("datei.txt");


while(!datei.eof() )

{

    getline(datei, zeile);

};


Schön... jetzt bin ich am Ende der Datei... ich will nun aber wieder an den Anfang springen... wie bekomm ich das gebacken, ich such schon seit ner Stunde, und finde nirgendwo ne passende Funktion...

Geschrieben

Mit seekg kannst du die Position des Lesezeigers in der Datei ändern. So setzt du ihn an den Anfang:

datei.seekg( 0, ios_base::beg );
Dann kannst du aber immer noch nicht viel damit machen, weil das Fehlerbit für das Lesen über das Dateiende hinaus gesetzt ist. Die Fehlerbits kannst du aber mit
datei.clear();
zurücksetzen. Übrigens ist deine Leseschleife möglicherweise fehlerhaft, je nachdem, was du mit der eingelesenen Zeile machst. eof liefert erst dann true, wenn getline schon einmal fehlgeschlagen ist. Du kannst aber auch getline selbst in der Schleifenbedingung benutzen:
while(getline(datei, zeile))
oder
while(!getline(datei, zeile).eof())

Beide Beispiele nutzen die Tatsache, dass std::getline eine Referenz auf das Stream-Objekt zurückgibt. Das erste Beispiel nutzt zudem noch aus, dass der Stream selbst als Bedingung genutzt werden kann. Effektiv liefert das true, wenn keines der Fehlerbits gesetzt ist. Das zweite Beispiel testet natürlich nur auf eof.

Geschrieben

Ich bin einfach mal so frech und hänge noch ne Frage hintendran:

Gibt es eine Funktion die eine Textdatei im Windows-Editor öffnet?

Ich will mittels einem Menüeintrag die Readme zu meinem Prog anzeigen,

finde aber nix dazu...

Geschrieben


#define FULL_PATH_README //hier Pfad zur readme


ShellExecute(handle,

    "open",

    "notepad.exe",

    FULL_PATH_README,

    getenv("windir"),

    0

);


einfach Notepad starten und als Parameter den vollen Pfad zur Readme (Dir + File) angeben.

Geschrieben

Also... in ANSI C gibt es dafür Funktionen, in ISO C++ nicht. Aber kannst die Funktionen ja trotzdem benutzten, ich muss nur bisschen klug*******ern.

Unter Linux (nur der Vollständigkeit halber) und Windows ist das aktuelle Verzeichnis das Verzeichnis, in dem die ausführbare Datei liegt. Solange also nicht irgendwo in deinem Programm die Funktion chdir() benutzt wird, kannst du das Verzeichnis der ausführbaren Datei mit dem des aktuellen Verzeichnises gleichsetzen.

Aktuelles Verzeichnis auslesen:

Einfach die Funktion _getcwd() benutzen.

char *_getcwd( char *buffer, int maxlen );

oder

wchar_t *_wgetcwd( wchar_t *buffer, int maxlen );

Der Return ist einfach nur ein Zeiger auf den Puffer, den man übergibt.

Das koppelst du halt mit deiner readme...

zu dem Handle:

Handle to the owner window used for displaying a user interface (UI) or error messages. This value can be NULL if the operation is not associated with a window.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...