Datei einlesen



  • Hi,

    also ich habe ein problem mit ner TXT einlesen: hier die Datei:

    tile, 0, 0, 0, 1
    tile, 4, 0, 3, 1
    tile, 5, 3, 1, 0
    tile, 1, 0, 0, 0
    tile, 6, 2, 2, 1
    tile, 7, 0, 4, 1
    tile, 9, 1, 2, 1
    tile, 8, 0, 1, 1
    

    soweit sogut: hier die Definition der einzellnen Zeilen:

    Typ, X, Y, Frame, Kollidierbar
    

    nun, jetzt wollt ich diese Datei einlesen und so ausgeben:

    for(int i=0; i<ZEILEN_IN_DER_DATEI; ++i)
    {
        cout << "Zeile    : " << i      << endl;
        cout << "============"<< endl;
        cout << "Typ      : " << blabla << endl;
        cout << "X        : " << blabla << endl;
        cout << "Y        : " << blabla << endl;
        // [...]
    }
    

    Nun, jetzt weis ich nicht wie ich die einlese? In C weiß ich es, aber streams sind für mich ein total neues Gebiet!

    Nun wie kann ich die werte einlesen und ausgeben? 😕



  • na, ganz einfach zeilenweise einlesen (siehe FAQ: Ströme und Dateien), und jede eingelesene zeile so durchlaufen, dass bei jedem komma in ne andere variable gespeichert wird. dann noch bei bedarf (z.b. für x und y) die string-werte in zahlen umwandeln (Suchfunktion / google: atoi und konsorten)

    fertig 🙂

    [ Dieser Beitrag wurde am 09.05.2003 um 16:33 Uhr von Korbinian editiert. ]



  • Nunja, aber wie mach ich das richtig? hast du etwas psoidocode?



  • solange nicht-dateiende:
     - speichere zeile in string zeile
     - lies-zeile-aus:
        > solange zeichen != ',' speichere in tile
        > solange zeichen != ',' speichere in X
        > solange zeichen != ',' speichere in Y
        > solange zeichen != ',' speichere in Frame
        > solange zeichen != ',' speichere in Kollidierbar
    ende solange;
    


  • Danke 🙂



  • #include <fstream.h>
    #include <iostream.h>

    main()
    {
    char text[100];
    ifstream eingang("dateinahme mit endung");
    //---
    if(!eingang)
    {
    //fehlermeldung datei kann nicht geöffnet werden
    }
    else
    {
    while(eingang.eof() == 0)
    {
    eingang.getline(text,100,'\n'); //zeile aus datei lesen
    //------
    // code um zeile in einzelteile zu zerlegen z.B. strtok
    //------
    }
    eingang.close();
    }
    }



  • Hallo zusammen,

    ich habe vor kurzem mit C++ angefangen, und diese technik des datei einlesens find ich als "noob" schon sehr interessant, ich hab nun versucht das, was du (RobRoy) gepostet hast zu verwenden, nur leider kriege ich bei jeder zeile immer nur die ausgabe 0*22fe58, vieleicht kann mir jemand sagen, was das zu bedeuten hat, ich schreib ma den code dazu...

    #include <fstream.h>
    #include <iostream.h>
    #include <stdio.h>
    #include <conio.h>
    
    main()
    {
    char text[100];
    int zaehler = 1;
    ifstream eingang("test.txt");
    //---
    if(!eingang)
    {
    //fehlermeldung datei kann nicht geöffnet werden
    }
    else
    {
    while(eingang.eof() == 0)
    {
    eingang.getline(text,100,'\n'); //zeile aus datei lesen
    //------
    // code um zeile in einzelteile zu zerlegen z.B. strtok
    //------
    
        cout << "Zeile "<< zaehler << ":" << eingang  << endl;
        zaehler++;
    }
    eingang.close();
    getch();
    }
    }
    


  • @newb

    Probiere mal:

    cout << "Zeile "<< zaehler << ":" << text << endl;

    die Zeile wird ja in text geladen!


Log in to reply