Zahlen aus Textdatei einlesen



  • Ich muss aus einer Textdatei in C++ Zahlen auslesen. Die Textdatei könnte etwa so aussehen:

    o21 32 45
    o24 25 56
    026 34 100323

    Es sollen jeweils die Zahlen aus der 2. und 3. Spalte in Form eines Integers in ein eigenes Array gepseichert werden.
    Hat jemand eine Idee wie man das machen könnte?
    Ich komm grad nicht weiter.
    lg



  • Zwischen den Spalten können beliebig viele Lehrzeichen stehen.



  • So in der Art:

    std::fstream f("datei.txt");
    std::vector<int> col2, col3;
    while (f) {
      int c1, c2, c3;
      f >> c1 >> c2 >> c3;
      col2.push_back(c2);
      col3.push_back(c3);
    }
    


  • Danke für die schnelle Antwort.
    Was ist der Unterschied zwischen einem Vektor und einem Array.
    Könnte man das ganze auch mit Hilfe eines Arrays machen?



  • cuba111 schrieb:

    Was ist der Unterschied zwischen einem Vektor und einem Array.

    Bei einem Vektor muss nicht im Voraus bekannt sein, wie viele Elemente er hat. Er kann beliebig viele haben

    cuba111 schrieb:

    Könnte man das ganze auch mit Hilfe eines Arrays machen?

    Wenn du weisst, wie viele Zeilen die Datei hat (maximal geht auch), dann ja. Ansonsten ist es zwar auch möglich mit realloc , aber das Zeugs ist so kompliziert, dass ein Vektor in C++ eindeutig besser ist.



  • Die STL hat eigene Container. Ein Vector ist im Grunde ein dynamisches Array, bloß es erleichtert den Umgang mit ihnen.



  • Ja ich weiß wieviele Zeilen max eingelesen werden. In dem Fall werd ich Arrays verwenden.
    Danke für eure Hilfe


  • Mod

    cuba111 schrieb:

    Ja ich weiß wieviele Zeilen max eingelesen werden. In dem Fall werd ich Arrays verwenden.

    Auch dann ist das eine schlechte Idee. Auf vielen Systemen ist der Stack begrenzt, so dass du keine großen statischen Arrays haben kannst. Und sobald du new/delete benutzt um das Array auf den Heap zu legen, hast du kein Argument mehr, nicht vector zu benutzen. Denn dieser macht genau das, nur besser als du das kannst.


Anmelden zum Antworten