Datei - Werte in Variablen speichern



  • Ich bin zurzeit dabei ein gleines Ratespiel selber in C++ mit der WinAPI zu machen...jetzt will ich eine Hightscoreliste machen und muss dazu Werte aus einer Datei auslesen...ich hab auch schon mit fstream aus C++ versucht...dann funktioniert meine Anwendung aber nicht mehr...also meine Frage:

    Gibt es in der WinAPI eine Möglichkeit werte aus Dateien zu lesen und in Variablen zu speichern???
    Am besten wärs wenn mans direkt in eine Int-Variable speichern könnte, sonst sollte es ein char-array sein. Wenn das auch nicht gäb fänd ichs noch net wenn jemand mir sagen kann wie ich den Variablen-Typ in dem ich den Wert speichern muss in Int oder char umwandeln kann, wobei ich das auch alleine schaffen sollte.

    Ich hoffe es kann mir jemand helfen.

    mfg Dimo

    PS.:Ja ich habe die Suche und Goggle benutzt...leider aber nichts brauchbares gefunden



  • Am einfachste benutzt Du den >> operator für den fstream (ifstream).
    Damit lassen sich integer, strings etc. bequem einlesen.

    Bsp:

    #include "stdafx.h"
    #include <fstream>
    #include <string>
    
    // test.txt
    // 1 2 3
    // hallo 5
    
    int main(int argc, char* argv[])
    {
    	std::ifstream file("test.txt");
    	if (file)
    	{
    		long a = 0;
    		long b = 0;
    		long c = 0;
    		std::string d;
    		long e = 0;
    
    		file >> a;
    		file >> b;
    		file >> c;
    		file >> d;
    		file >> e;
    
    		file.close();
    	}
    }
    

    BTW: entweder weisst Du was für ein Typ Du einlesen möchtest (d.h. die Struktur des Files ist bekannt) ODER du speicherst Typen Information zu dem Typenwert ab. Mein Bsp geht den ersten, einfacheren, weniger generischen Weg.
    ➡ Wenn ein Integer (z.B. 32bit) in ein File abgespeichert wird, ist es einzig und allein dem Leser dieser Daten überlassen wie er diese Daten interpretieren will.



  • Ich hab es so wie schon gesagt versucht...es geht nicht mit fstream und auch nicht mit ifstream...auch andere gehen nicht...gibt es keine WinAPI-Funktion die das kann???

    mfg Dimo



  • die winapi hat ReadFile. das ist aber viel zu umständlich, um integerwerte aus einer datei zu lesen.
    nimm fsanf oder fread, je nachdem wie deine werte gespeichert sind ( textformat/binärformat ).
    oder wenn es unbedingt c++ sein muss, nimm dieses fstreamzeug.



  • wie schon gesagt...fstream geht nicht -.-...ich schau mir mal dieses fsanf und fread an...danke

    mfg Dimo



  • Also nochmal...ich glaub ich habs net richtig erklärt: Ich suche eine WinAPI-Funktion mit der ich eine Datei meiner Wahl öffnen kann, eine mit der ich die Werte in jeder Zeile lesen kann und eine die die Datei natürlich wieder schliest...ich hoffe es gibt solche Funktionen...es sollte nichts mit fstream zu tun haben wenn Möglich, da dann mein Programm wieder nicht mehr Funktioniert.



  • Dimo schrieb:

    Also nochmal...ich glaub ich habs net richtig erklärt: Ich suche eine WinAPI-Funktion mit der ich eine Datei meiner Wahl öffnen kann,

    CreateFile
    (ja, auch zum Öffnen bestehender Dateien, wird über Flags gelöst)

    eine mit der ich die Werte in jeder Zeile lesen kann

    ReadFile
    Da musst du aber noch ein wenig Logik (z.B. Ende der Zeile finden) selbst dazuprogrammieren. Eine fertige "ReadLine" Funktion gibt's in der WinAPI AFAIK nicht.

    und eine die die Datei natürlich wieder schliest...

    CloseHandle

    ich hoffe es gibt solche Funktionen...es sollte nichts mit fstream zu tun haben wenn Möglich, da dann mein Programm wieder nicht mehr Funktioniert.

    Ich weiss zwar nicht wieso dein Programm dann nicht funktionieren sollte, aber die oben genannten Funktionen sind "reine" Windows Funktionen, aus der KERNEL32.DLL.



  • danke erst mal...zu dem letzten...ich weis ja auch net warum des net geht...es gibt ja keine Fehler und keine Warungen...es Beendet einfach sofort wieder wenn ich es starte


Anmelden zum Antworten