Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Zum Anfang einer Datei springen?!

Empfohlene Antworten

Veröffentlicht

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...

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.

Danke für die ausführliche Antwort...

War genau das was ich gebraucht habe... ;)

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...


#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.

Kann man diesen absoluten Pfad auch irgendwie relativ zum momentanen Programmverzeichniss angeben?

Wenn ich einfach "readme.txt" übergebe passiert gar nix... :(

Was ist eigentlich mit handle in diesem Fall gemeint?

Was für ein handle?

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.

Selbst wenn ich den absoluten Pfad angebe passiert einfach garnichts...

Habe alles genau so gemacht wie beschrieben... ?!

Sorry das ich mich erst so spät zurückmelde...

Der Parameter SW_SHOWMAXIMIZED war die Lösung...

Eigentlich auch logisch... :P

Danke nochmal an alle....

Nochmal ich ;)

Das mit dem relativen Pfad funktioniert nicht...

Die Datei wird immer in C: gesucht... WARUM?

Ja...

Ich müsste einfach nur ein Textdokument im selben Ordner wie meine .exe Datei aufrufen...

Danke, das hilft ;)

Falls das hier noch jemand liest:

Für die 2te Funktion braucht man die Lib shlwapi.lib und den header shlwapi.h .

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.