Auslesen einer Textdatei



  • Hallo,

    habe in einer Textdatei Daten stehen in Folgendem Format:

    Mannschaften.txt

    1 Mannschaft
    2 Mannschaft2
    3 Mannschaft3
    4 Mannschaft4
    5 Mannschaft5
    6 Mannschaft6

    Es soll Zeilenweise eingelesen werden. Die Daten sollen in ein Array geschrieben werden.

    Ungefähr so:
    alleVereine[0] = Verein("Mannschaft",1);
    alleVereine[1] = Verein("Mannschaft2",2);
    etc....

    Ich suche schon die ganze Zeit readline Beispiele dafür, finde aber nichts. Hoffe es weiß jemand rat.





  • hm, aber wie mach teil ich die Zeile denn auf? Zahl in den einen, Wort oder sogar Wörter in den anderen Arry platz?

    Das ist das mit dem offset und dem puffern und dem seekp?



  • dafur kanst du ein globals static 2d array benutzen [][] und dort speichern wie die werte in der text datei liegen^^



  • C4rter schrieb:

    hm, aber wie mach teil ich die Zeile denn auf? Zahl in den einen, Wort oder sogar Wörter in den anderen Arry platz?

    Das ist das mit dem offset und dem puffern und dem seekp?

    Besser eine Klasse Verein in der alle Info zum Verein abelegt werden können. Hier ein Vorschlag

    #include <algorithm>    // copy
    #include <fstream>
    #include <iostream>
    #include <iterator>     // back_inserter, istream_iterator
    #include <string>
    #include <vector>
    
    class Verein
    {
    public:
        friend std::istream& operator>>( std::istream& in, Verein& v )
        {
            in >> v.m_nr;
            getline( in, v.m_name ); // Rest der Zeile ist der Name, falls 'name' auch Leerzeichen enthalten kann
            return in;
        }
    private:
        std::string m_name;
        int m_nr;
    };
    
    int main()
    {
        using namespace std;
        vector< Verein > vereine;
        ifstream file( "input.txt" );
        copy( istream_iterator< Verein >( file ), istream_iterator< Verein >(),
            back_inserter( vereine ) );
        return 0;
    }
    

    Ansonsten schau mal in allen aktuellen Threads der letzten zwei Tage, die das Wort 'einlesen', 'fstream' oder 'parsen' im Betreff haben.

    Gruß
    Werner



  • Jau, so hab ichs kapiert, vielen Dank für deine hilfe.



  • Mist, bekomm das doch nicht ganz hin. Wie schreib ich die denn so in das Array?



  • Hi!

    Du machst einfach einen vektor mit Zeigern auf deine ganzen Vereine.

    Pseudocode:

    std::vector< Verein *> v;
    
    while !( eof )
    {
      Verein *newVerein = new Verein();
      stream >> newVerein;
      v.push_back( newVerein );
    }
    

    Am ende nicht vergessen den Speicher wieder freizugeben.

    grüße



  • Warum auf dem Heap? Vereine können ruhig kopiert werden. 😉



  • Okay, ich vergaß zu erwähnen. Als Zeiger oder direkt. 🙂

    grüße


Anmelden zum Antworten