004
25.03.2014, 07:06 Uhr
TheKinji
|
Zitat von ao: |
Schon mal gar nicht schlecht.
Weißt du, dass du mit string::replace Teile eines Strings ersetzen kannst?
Und dass du mit fout << zeile die veränderte Zeile in die Out-Datei kriegst?
Gute C++-Referenz-Seite: www.cplusplus.com/reference/string/string/
Nochn Hinweis: Das Konstrukt
C++: |
for (int i = 0; i < zeile.length (); i++) if (zeile[i] == '7) .....
|
ist "intuitive C-Programmierung". Das tut zwar das Richtige, aber mit C++-Strings geht man eigentlich anders um: Mit string::find_first_of kriegst du ohne For-Schleife direkt die Position des ersten Treffers (oder string::npos, falls kein Treffer da ist)
|
Okey dass mit fout << zeile wusste ich, die anderen hatte ich noch nie gehabt.(Sehen aus wie Funktionen und Funktionen hatte wir eigentlich auch noch nie^^)
Ich habe es jetzt mal so geklärt, auf so einer Weise:
C++: |
fstream fin, fout; fin.open("MH.txt", ios::in); fout.open("MH_new.txt", ios::out); if (fin.good() && fout.good()){ cout << "Dateien konnten geoeffnet werden" << endl; string zeile; string kopie; while (!fin.eof()){ getline(fin, zeile); cout << zeile << endl; for (int i=0; i < zeile.length(); i++){ if (zeile[i] == '7'){ //cout << "8 gelesen" << endl; kopie += "nyan"; } else { //cout << "Zeichen ungleich 8 gelesen" << endl; kopie += zeile[i]; } } // for kopie += '\n'; cout << kopie << endl; }// while fout << kopie; fin.close(); fout.close(); } else { cout << "Dateien konnten nicht geoeffnet werden" << endl; }
system("pause"); return 0;
}
|
Könnte man dass irgendwie etwas umschreiben, dass es kürzer erscheint :/?
edit von ao: CPP-Tags eingesetzt. Bitte in Zukunft selber machen. Dieser Post wurde am 25.03.2014 um 08:56 Uhr von ao editiert. |