Zahlen aus Datei lesen und ich einer Variable speichern

FaNo86

Mitglied
Hi ich habe ein Problem und zwar ich will Zahlen (positiv und negativ) aus einer Datei laden die immer durch ein Leerzeichen getrennt sind.

hier ein Bsp:

26.363998 -0.000000 -10.550499
26.363998 0.000000 10.550499
26.363998 -0.000000 -10.550499

Die will ich dann immer in einem Double Array speichern. Aber es muss schon die ganze Zahl sein also
double Bla[0]=26.363998
double Bla[1]= - 0.000000
usw.
ich hoffe ihr könnt mir weiter helfen ich habe keine Ahnung wie ich das machen soll und jede Ziffer einzeln speichern will ich nicht
mfg Fabi
 
Also double ist da schonmal ungeignet. Nimm lieber long, da kriegst du auch alle Zahlen nachm Komma, nicht nur die ersten Beiden. Das Auslesen kannst du ja Zeilenweise machen, am Besten liest du in ein char-Array rein. Wenn du eine Zeile hast, überprüfst du das char-Array auf Leerzeichen. Wenn du ein Leerzeichen entdeckst, schreibst du bis dorthin die Zahl in eine longvariable. Zuvor noch nach float umwandeln. Das machst du, bis du das Ende der Datei erreicht hast.

Gruß
cesupa
 
Hi.
Also double ist da schonmal ungeignet. Nimm lieber long, da kriegst du auch alle Zahlen nachm Komma, nicht nur die ersten Beiden. [...] Wenn du ein Leerzeichen entdeckst, schreibst du bis dorthin die Zahl in eine longvariable. Zuvor noch nach float umwandeln.
Du hättest kaum größeren Unsinn erzählen können. :confused: Wie willst du denn gebrochen rationale Zahlen in einem long speichern? Was meinst du mit "man kriegt alle Zahlen nach dem Komma"?

Der Typ double ist in diesem Fall der am besten geeignete.

@FaNo86: Verwendest du denn C oder C++? Für C++ würde ich auf jeden Fall einen std::vector<double> empfehlen, dann mußt du dich nicht um die Speicherverwaltung kümmern. Dann sieht das Einlesen für alle Werte aus der Datei so aus:
C++:
#include <vector>
#include <iostream>
#include <algorithm>
#include <fstream>
#include <iterator>

using namespace std;

vector<double> values;
ifstream f("abc.dat");

copy(istream_iterator<double>(f),
     istream_iterator<double>(),
     back_inserter(values));
Gruß
 
Zurück