Ausgabe in Datei
-
Hallo liebe Leute,
ich werd noch verrückt, hab jetzt stundenlang bei Google und in Fachbüchern gesucht

Es geht um das einfache Speichern zweier Vektoren in eine Text-Datei, die ich dann z.b. mit MatLab oder Gnuplot weiterverarbeiten möchte. Beide Vektoren werden über den cout-Befehl problemlos in der Kommandozeile ausgegeben, wenn ich aber die Datei "daten.dat" im OS öffne, dann steht darin einfach nichts. Einen ganz normalen String wie "Hier steht ein Text" in die Datei zu schreiben funktioniert aber.
Eingebundene Dateien stehen einfach mal drüber.. dazwischen kommt noch was, aber das tut nichts zur Sache.
#include <iostream> #include <string> #include <vector> #include <algorithm> #include <cmath> #include <math.h> #include <stdio.h> #include <stdlib.h> #include <time.h> #include <cstdlib> #include <ctime> #include <iostream> #include <fstream> using namespace std; fstream output; output.open("daten.dat", ios::out); for (int i=0; i<k; ++i) { cout << time_data[i] << '\t' << x_vektor[i] << endl; output << time_data[i] << "\t" << x_vektor[i] << endl; }Falls ich einen grundlegenden Fehler mache, würde es mir auch erstmal reichen, wenn ihr mir das Thema nennt, in das ich mich einarbeiten muss. Dann schau ich alleine, wie weit ich dann komme (stehe erst ziemlich am Anfang mit C++)
Vielen Dank für Antworten!!!
-
Mach lieber mal ein kleines lauffähiges Programm, als zu vermuten, was wichtig ist und was nicht.. Im Moment kann man da nicht viel dazu sagen, weil wir nicht einmal sehen, woher die Daten überhaupt kommen sollen..
-
Also ich erkenne soweit auch nicht sonderlich viel, aber soweit ich weiss sind math.h und cmath genau das selbe...
Das selbe gilt für stdlib.h und cstdlib.War das extra so gemeint oder wie ist das

-
Walnut_Burl schrieb:
Also ich erkenne soweit auch nicht sonderlich viel, aber soweit ich weiss sind math.h und cmath genau das selbe...
Das selbe gilt für stdlib.h und cstdlib.War das extra so gemeint oder wie ist das

Es gibt sogar Unterschiede: Die .h-Header sind C-kompatibel, d.h. haben keine namespaces. iostream und iostream sind aber definitiv gleich

-
SeppJ schrieb:
Walnut_Burl schrieb:
Also ich erkenne soweit auch nicht sonderlich viel, aber soweit ich weiss sind math.h und cmath genau das selbe...
Das selbe gilt für stdlib.h und cstdlib.War das extra so gemeint oder wie ist das

Es gibt sogar Unterschiede: Die .h-Header sind C-kompatibel, d.h. haben keine namespaces. iostream und iostream sind aber definitiv gleich

Ohh danke das wusste ich noch gar nicht. Nja wieder was dazu gelernt

Jo das mit iostream ist mir jetzt auch aufgefallen

-
Hey, danke schonmal!
Ein entsprechend lauffähiger Quelltext sähe dann so aus (abgekürztes Programm, gleiches Problem): Wenn ich ganz am Ende anstelle der for-Schleife nur
output << "irgendein text";schreibe, dann wird in meinem Verzeichnis die Datei 'daten.dat' angelegt mit diesem Text drin. Warum so nicht?
#include <iostream> #include <cmath> #include <cstdlib> #include <ctime> #include <fstream> #include <vector> using namespace std; int main (int argc, char *argv[]) { srand(time(NULL)); vector<double> x_vektor; vector<int> time_data; for (int i=0; i<20; ++i) time_data.push_back(i); for (int i=0; i<20; ++i) x_vektor.push_back((double) rand()/ (double) RAND_MAX); fstream output; output.open("daten.dat", ios::out); for (int i=0; i<20; ++i) { cout << time_data[i] << '\t' << x_vektor[i] << endl; output << time_data[i] << '\t' << x_vektor[i] << endl; } }
-
Das Problem das du beschreibst passt nicht zu deinem Programm. Dieses funktioniert nämlich ganz hervorragend. Bist du sicher, dass du dir hinterher die richtige Datei anguckst?
-
SeppJ schrieb:
Bist du sicher, dass du dir hinterher die richtige Datei anguckst?
Leider bin ich mir ziemlich sicher, der String wird ja in genau diese Datei (daten.dat) in meinem /User/...-Verzeichnis geschrieben (hab bisher dezent verschwiegen, dass ich mit Mac OSX und XCode arbeite).
Aber danke schonmal für die Bestätigung, dass es eigentlich nicht falsch ist... seltsam, warum es nicht funktioniert

edit: Mit Code::Blocks (einer anderen IDE) funktioniert es auch tadellos. Naja, ich steige erstmal um, bis sich was ergibt.
-
Lass dir mal ganz am Anfang des Programms ein "Hello World" ausgeben. Du wärst nicht der Erste, der sich eine alte Programmversion anschaut (z. B. Release kompiliert, Debug geschaut).
-
Es scheint sich - nach weiterer Recherche - um einen Bug in Xcode bzw. Snow Leopard zu handeln. Ich habe nun die Ausgabe nicht mehr auf 10.6 / Debug / x86_64 stehen, sondern habe zu 10.6 / Release / i386 gewechselt. Nun funktioniert es problemlos. Damit ist das Problem zwar nicht gelöst, aber geschickt umgangen.
Vielen Dank!