textdateien umschreiben
-
Jop so in etwa
. Also Dateiname ist der Name der Datei, die du bearbeiten willst. Und neuerName ist der Name der temporären Datei.// #include "stdafx.h" MS Kram wenn du keine precompiled Headers benutzt brauchst du das nicht #include <iostream> // Muss in spitze Klammern #include <fstream> #include <string> // using namespace std; Da überall std:: davor steht brauchst du das nicht int i; int main() { std::string line; std::string dateiname="C:\\lese.txt"; std::string neuerName=dateiname + "_temp"; std::ifstream i(dateiname.c_str()); std::ofstream o(neuerName.c_str()); //Fehlerüberprüfung für beide Streams while (!i.eof()) { std::getline(i, line); i = line.length(); i = i - 5; line.erase(i,5); line += ", 0, 0, 0),"; o << line << std::endl; } i.close(); o.close(); std::remove(dateiname.c_str()); // Funktionen in cstdlib enthalten std::rename(neuerName.c_str(), dateiname.c_str()); return 0; }Ich hoffe nun ist alles klar.
-
Das ist echt nett, DANKE !!! Das Script gibt scheint zu funktionieren, compiler mault nicht rum, jedoch wird irgendwie nirgendswo die neue Datei erstellt, kann sie im Projekt oder auf Platte nirgends finden? bin ich zu blöd?
-
Die neue Datei ersetzt die alte, sodass es den von dir gewünschten Effekt ergibt. D.h. nach Ausführung des Codes sollte die neue Datei den Namen der alten tragen und die alte sollte gelöscht sein. Öffne einmal die Datei und sehe nach ob sich was geändert hat.
-
ne leider nicht

also ein Fehler den ich noch korigiert habe ist, das der Code
i = line.length(); i = i - 5; line.erase(i,5); line += ", 0, 0, 0),";mit der selben Variable arbeitet wie
while (!i.eof()) { std::getline(i, line);
-
Hast du es mit der veränderten Variante noch einmal probiert?
-
Ja also es sieht jetzt so aus:
#include "stdafx.h" #include <iostream> #include <fstream> #include <string> using namespace std; int i,t; int main() { std::string line; std::string dateiname="C:\\lese.txt"; std::string neuerName=dateiname + "_temp"; std::ifstream i(dateiname.c_str()); std::ofstream o(neuerName.c_str()); //Fehlerüberprüfung für beide Streams while (!i.eof()) { std::getline(i, line); t = line.length(); t = t - 5; line.erase(t,5); line += ", 0, 0, 0),"; o << line << std::endl; } i.close(); o.close(); std::remove(dateiname.c_str()); // Funktionen in cstdlib enthalten std::rename(neuerName.c_str(), dateiname.c_str()); cout << "Hallo" << endl; return 0; }Und der Text sieht so aus
(510, 6308, 39, 0, 1, 1, 1), (510, 6310, 1.3, 0, 1, 1, 1), (510, 8365, 58.4, 0, 1, 1, 1), (511, 1710, 0.4, 0, 1, 1, 1), ... usw.und müsste nach dem Durchlauf folgendermaßen ausssehen:
(510, 6308, 39, 0, 1, 1, 0, 0, 0), (510, 6310, 1.3, 0, 1, 1, 0, 0, 0), (510, 8365, 58.4, 0, 1, 1, 0, 0, 0), (511, 1710, 0.4, 0, 1, 1, 0, 0, 0), ... usw.
-
vlt sollte man die neue Datei einfach woanders hinschreiben?
-
Der Code sollte eigentlich funktionieren. Hast du im entsprechenden Verzeichnis (C:) nachgesehen ob die Datei verändert war?
-
ja das ist ja das Traurige
naja was solls, nochmal vielen Dank für deine Zeit und Hilfe
-
so habs bischen umegschrieben udn jetzt gehts , jupie , danke dir :):)
