Wie schreibe ich Zahlen aus Datei in ein Array?
-
Hi,
ich muss mit C++ Gleitkommazahlen aus einer .txt Datei in ein Array einlesen. Die Zahlen in der .txt sind durch tab getrennt. Da ich nicht weis, wieviele Zahlen in der .txt Datei stehen, wird es (zumindest für mich) noch schwieriger.
Hat jemand eine Idee, wie das funktioniert???
-
ifstreams und STL-Container
-
Kurz: ifstream erzeugen.
Prüfen, ob das Öffnen der Datei erfolgreich war.
Wenn ja:
streamname >> variable;
Wenn du ein Array unbekannter Größe einliest, wirst du dir wohl selber Speicher reservieren müssen. Alternativ nimmst du einen vector<float>.
-
Hierzu ein Beispiel. Es werden die Streamiteratoren istream_iterator und das Pendant ostream_iterator verwenden.
#include <cstdlib> #include <iostream> #include <fstream> #include <iterator> #include <list> using namespace std; int main() { /** * Die Werte werden in einem Container vom Typ list gespeichert. */ list<float> v; /** * Filestream erzeugen. Abfrage ob das Öffnen der Datei erfolgreich * war */ ifstream fs("test"); if (!fs) return EXIT_FAILURE; /** * Zugriff auf den Stream via Streamiteratoren. Standardkonstruktor * von istream_iterator zeigt auf das Ende des Streams. */ istream_iterator<float> ii(fs); istream_iterator<float> eos; /** * Werte aus der Datei in die Liste kopieren */ copy(ii, eos, back_inserter(v)); /** * Werte per ostream_iterator auf die Standardausgabe schreiben */ ostream_iterator<float> oi(cout, "\n"); copy(v.begin(), v.end(), oi); }
-
Cool, danke für die schnelle Hilfe. Das bringt mich wirklich weiter.

-
Selbstverständlich muss in dem Beispiel in meinem oberen Post die Datei test existieren, ansonsten bricht das Programm ab.
Und was ich vergessen hab zu sagen, die Kommazeichen (mir ist kein besseres Wort dafür eingefallen
) müssen Punkte keine Komata sein. Alternativ kannst du das auch mit dem Konzept der Lokalen aus C/C++ ändern