INT wert in datei und als int wieder auslesen ?!?



  • Hallo,
    ich habe folgendes problem, ich schreibe einige werte, unter anderem eine artikelnummer, in ein *.txt file.
    Wie kann ich nun aber meinen Konsruktor, der int werte erwartet aufrufen, wenn die aus der datei ausgelesenen daten ja alle strings sind?
    Meine Frage also: Wie kann ich einen string in einen int unwandeln? oder Gibt es eine andere möglichkeit strings un ints in eine textdatei zu speichern und auch als int und strings wieder auszulesen?

    Danke für die Antwort.
    Phil



  • Ja, gibt es.

    VORSICHT, folgender Text sind nur meine gebrochenen Gedanken:

    Also um string in int umzuwandeln, müsste atoi() ausreichen (sonst würde atoi nur bei Feldern funktionieren, habs noch nie mit strings versucht).
    Die genaue Syntax würde ich in der Online-Hilfe nachschlagen, kann sie dir nicht sagen.

    Aus der Datei müsste man die Werte gleich in Integer-Variablen einlesen und die Variablen übergibst du den Konstruktor, so würde ich das machen.

    Wenn in der Datei die Werte ohne Sonderzeichen stehen, die müssen genau mit Hilfe von fstream gespeichert werden, wie sie ausgelesen werden sollen, dann:

    Speichern:
    //fout -> schreibt hier in die Datei
    fout << IntVar << endl;
    Lesen:
    //fin -> liest hier aus der Datei
    fin >> IntVar;

    Davor müsstes du fin und fout definieren, aber da ich nix Falsches sagen will (hab nicht mehr alles genau im Kopf und hier hab ich kein C++ 😕 ), sag ich dir JETZT noch nicht wie es geht, vielleicht weißt du es ja selbst, ist nur ein Befehl, weiß aber nicht welchen, sorry. 😞



  • Wäre vielleicht gut, wenn man wüsste, ob du nun C oder C++ programmierst.

    Also in (ANSI-)C würde es so funktionieren:

    FILE *fp;
    int zahl;
    
    fp=fopen("datei.txt", "w");
    if(fp)
    {
       fprintf("%d", 100); //schreibt 100 in die Datei als String
    
       fclose(fp);
    }
    
    fp=fopen("datei.txt", "r");
    if(fp)
    {
       fscanf("%d", &zahl); //liest 100 aus der Datei als Integer
    
       fclose(fp);
    }
    


  • du kannst im falle c++ auch in das c++ faq schauen, da gibt es unter dem beitrag "ströme" eine lösung.



  • //Schreiben:
    char *fileName="Blub.txt";  //Name der Datei
    
    ofstream fout;  //-> für das Schreiben dient jetzt der Befehl fout
    
    fout.open(fileName);  /*Datei wird geöffnet sollte auch dort sein, sonst wird sie erstellt*/
    
    fout << VarInt << endl;  //in der Datei wird die Zahl geschrieben
    
    fout.close();  //Datei wird geschlossen
    
    //Lesen:
    char *fileName="Blub.txt";
    
    fin.open(fileName); //Dies wurde editiert von mir, weil ich das vergessen hab
    ifstream fin;  //=> fin für lesen der Daten aus die Datei
    
    fin >> VarInt;
    fin.close();   // Datei schließen
    

    So das isses von meiner Seite aus.



  • @Maschmello
    Und woher weiß fin, von welcher Datei es lesen soll? 😉


Anmelden zum Antworten