Konsolenausgabe ohne Code
-
Hey Leute,
ich bin noch ziemlicher Anfänger was C++ angeht, aber ich arbeite im Moment an einem Programm, was bestimmte Zeilen einer Datei in einen vector einlesen soll. Das Problem ist, das er mir immer 5mal den Fehler "Fehler beim Lesen aus der Datei Ausgabe.txt" ausgibt. Hier der Code:#include <iostream> #include <sstream> #include <fstream> #include <string> #include <iomanip> #include <limits> #include <vector> #include <iterator> using namespace std; string Wert; int Zn; long double z1; long double var1; long double var2; vector<long double> vec; long double rZeile( const std::string& filename, int Zn ) { stringstream umrechnung; ifstream datei2( filename.c_str() ); if(!datei2.is_open() ) { cerr << "Fehler beim Oeffnen der Datei " << filename << endl; return 0; } for( ; Zn > 1; --Zn ) datei2.ignore( numeric_limits< streamsize >::max(), '\n' ); string var1; if(!getline( datei2, var1)) { cerr << "Fehler beim Lesen aus der Datei " << filename << endl; return 0; } umrechnung << var1; umrechnung >> var2; return var2; } int main(){ ofstream datei("Ausgabe.txt"); datei << "1542.35413\n"; datei << "235.436543\n"; datei << "36.8313845\n"; datei << "4.71684257\n"; datei << "5956431757\n"; Zn = 1; long double invector; for(z1 = 1; z1 <= 5; ++z1){ invector = rZeile( "Ausgabe.txt", Zn); vec.push_back(invector); ++Zn; } }Ich verstehe natürlich den Sinn dahinter, warum das ausgegeben wird, da ich aber kein Problem finden konnte habe ich testweise das Einlesen in den vector aus dem Code entfernt:
#include <iostream> #include <fstream> #include <string> using namespace std; int main(){ ofstream datei("Ausgabe.txt"); datei << "1542.35413\n"; datei << "235.436543\n"; datei << "36.8313845\n"; datei << "4.71684257\n"; datei << "5956431757\n"; }Wenn ich das Programm jetzt kompiliere gibt es jedoch immernoch 5 mal den Fehler "Fehler beim Lesen aus der Datei Ausgabe.txt" aus. Ich kann mir nicht erklären wo das herkommt. Die Datei wird übrigens in beiden Fällen korrekt geschrieben. Sie sieht folgendermaßen aus.
1542.35413 235.436543 36.8313845 4.71684257 5956431757Ich verwende zum Schreiben meines Programms Dev-c++ 5.5.3 mit TDM-GCC-4.7.1 in der 64-Bit Edition. Microsoft VS währe aber auch möglich.
Ich hoffe ihr habt eine Idee für mein Problem.
LG xyxyxyxy
-
ich habe selbst wenig ahnung aber ich vermute es hat was mit der variablen Zn zu tun.
Welchen wert hat die? ich kann das nicht erkennen. Vieleicht musst du auch da beu der vorschleife zeile 28 geschfeifte klammern setzen.
-
Das Problem ist, dass Dein Ausgabestrom noch offen und u.U. gar nicht geschrieben ist, wenn Du schon anfängst zu lesen.
Pfui: globale Variablen!
