Mit Punkten arbeiten
-
HighLigerBiMBam schrieb:
ifstream istr(name);Der Standard kennt std::string und benötigt keinen C-String.
Das ist leider an dieser Stelle erst mit C++2011 so (korrigiert), auch wenn es schon Compiler gibt, die es so umsetzen.
P.S: Dennoch würde ich Lernresistente nicht weiter füttern. Er soll erst einmal sein Buch "richtig" lesen, und keine Fragen stellen, die durch die Vorkapitel eigentlich zu 95% beantwortet sein sollten (Ich kenne das Buch nicht, aber das was ich in Google-Books quergelesen hat erweckt in mir den Eindruck, dass das Buch jedenfalls nicht so schlecht ist, das der OP beim richtigen Lesen wirklich so viele Wissenslücken haben sollte). Das man das ein oder andere Vergessen kann, okay, aber irgendwo gibt es doch Grenzen.
-
asc schrieb:
Das ist leider an dieser Stelle erst mit C++2011 so (korrigiert), auch wenn es schon Compiler gibt, die es so umsetzen.
Ich verwende das schon unterbewusst so... Hat sich beim Compilerwechsel eingeschlichen 
-
Das ist der neue Code:
struct Point { int x, y; Point(int xx, int yy):x(xx),y(yy) {} }; int main() { ofstream fout( "mydata.txt" ); cout << "Geben Sie bitte den Namen der Ausgabedatei ein:"; string name; cin>>name; ofstream ostr(name.c_str()); if(!ostr) cerr << "Fehler beim Oeffnen der Ausgabedatei" << name << endl; vector <Point> original_points; for( int i = 0; i < 7; ++i ) { cout << "Bitte geben sie einen x- und einen y- Wert ein: "; int x,y; cin>>x>>y; if (x >= 10000 || x <= 0 || y <= 0 || y >= 10000) {cout << "ungueltiger wert" << endl; break;} original_points.push_back( Point(x,y) ); } for (int i = 0; i < original_points.size(); ++i){ fout << original_points[i].x << ',' << original_points[i].y << endl; cout << original_points[i].x << ',' << original_points[i].y << endl;} ostr.close(); cout << "Geben Sie bitte den Namen der Eingabedatei ein:"; cin>>name; ifstream istr(name.c_str()); if(!istr) cerr << "Fehler beim Oeffnen der Eingabedatei" << name << endl; vector <Point> processed_points; int x,y; char c; while (!istr.eof()) { if(istr >> x >> c >> y) processed_points.push_back(Point(x,y)); } for (int i = 0; i < processed_points.size(); ++i) cout << processed_points[i].x << ',' << processed_points[i].y << endl; keep_window_open(); return 0; }