Werte in Datei abschpeichern
-
Hallo, ich habe 4 Vektoren mit Daten(Zahlen). Wie kann ich sie alle nacheinander spaltenweise in eine Datei jeweils mit 10 Nachkommastellen ausgeben? Sie müssen nebeneinander stehen, damit ich das plotten kann.
-
müsste ungefähr so gehn:
vector<double> v1, v2, v3; ofstream ofs("daten.txt"); ofs.precision(10); //annahme: alle vektoren haben gleich viel daten for(size_t i = 0; i < v1.size(); ++i) { ofs << v1[i] << ' ' << v2[i] << ' ' << v3[i] << endl; }
-
uns was muss ich in dem header einbinden fstream?
-
<fstream>
und
<vector>und using namespace std; sollte noch irgendwo hin
-
Kan man das auch ausgerichtet ausgeben? Dass die ersten Ziffern immer untereinander sind?
-
Ja, dafür gibt es die IO-Flags wie width, precision usw.
#include <iostream> #include <fstream> #include <vector> #include <algorithm> #include <iterator> #include <ctime> using std::vector; using std::ofstream; using std::endl; int main() { srand(time(0)); vector<double> v1, v2, v3, v4; std::generate_n(std::back_inserter(v1), rand()%100, rand); std::generate_n(std::back_inserter(v2), rand()%100, rand); std::generate_n(std::back_inserter(v3), rand()%100, rand); std::generate_n(std::back_inserter(v4), rand()%100, rand); ofstream out("YOURFILE.TXT"); std::ostream & of = (true) ? std::cout : out; std::size_t index = 0; while ( index < v1.size() || index < v2.size() || index < v3.size() || index < v4.size() ) // unschön :( { of.width(15); of.precision(10); of << std::fixed << std::right << std::showpos; if ( index < v1.size() ) of << v1[index] << " "; if ( index < v2.size() ) of << v2[index] << " "; if ( index < v3.size() ) of << v3[index] << " "; if ( index < v4.size() ) of << v4[index]; of << endl; } return 0; }
-
das ding stürzt leider ab
-
Ja, die || im Schleifenkopf müssen && sein.