Felder löschen - brauche hilfe!
-
Da haste wohl recht ja.
Aber ich füge es erst in meinem Compiler ein, danach gehe ich immer Schritt für Schritt, break für break das Programm durch und versuche dann zu verstehen wie das ganze funktioniert.
-
Quick and Dirty:
#include <iostream> #include <fstream> #include <string> int main() { std::cout << "Eingabedatei: "; std::string inFilename; std::cin >> inFilename; std::ifstream inFile(inFilename.c_str()); if (!inFile.good()) { std::cerr << "Fehler beim Oeffnen der Datei " << inFilename << std::endl; return 1; } std::string outFilename = "_" + inFilename; std::ofstream outFile(outFilename.c_str(), std::ios::trunc); if (!outFile.good()) { std::cerr << "Fehler beim Oeffnen der Datei " << outFilename << std::endl; return 2; } std::cout << "Ausgabedatei: " << outFilename << "\n" << std::endl; while (!inFile.eof()) { std::string line; std::getline(inFile, line); size_t pos; if ((pos = line.find(":")) != std::string::npos) { line = line.substr(pos + 1, line.length()); if (line.length() > 0 && line[0] == ' ') { line.erase(0, 1); } } line += "\n"; outFile << line; std::cout << line; } inFile.close(); outFile.close(); return 0; }
-
WOW danke für die Mühe!
kannst du vielleicht kurz erläutern wie es funktioniert?
-
KompiPauer schrieb:
WOW danke für die Mühe!
kannst du vielleicht kurz erläutern wie es funktioniert?Wie man das Programm benutzt oder was der Quellcode macht?
Zum Benutzen solltest du es zunächst kompilieren und in den Ordner verschieben, wo deine Dateien liegen. Anschließend startest du es und gibst den Namen der Datei ein, die noch die Zeilenangaben enthält. Dann wird eine neue Datei generiert, die _NameDerDatei heißt. Das ist dann die Datei ohne Zeilenangaben.
Erklärung des Codes:
#include <iostream> // std::cout #include <fstream> // std::ifstream, std::ofstream #include <string> // std::string int main() { std::cout << "Eingabedatei: "; std::string inFilename; std::cin >> inFilename; std::ifstream inFile(inFilename.c_str()); // Datei zum Lesen öffnen if (!inFile.good()) // Datei geöffnet? { std::cerr << "Fehler beim Oeffnen der Datei " << inFilename << std::endl; return 1; } std::string outFilename = "_" + inFilename; std::ofstream outFile(outFilename.c_str(), std::ios::trunc); // Datei zum Schreiben öffnen if (!outFile.good()) // Datei geöffnet? { std::cerr << "Fehler beim Oeffnen der Datei " << outFilename << std::endl; return 2; } std::cout << "Ausgabedatei: " << outFilename << "\n" << std::endl; while (!inFile.eof()) // Solange Dateiende nicht erreicht { std::string line; std::getline(inFile, line); // Neue Zeile aus Datei einlesen size_t pos; if ((pos = line.find(":")) != std::string::npos) // Position von : finden, falls : vorhanden { line = line.substr(pos + 1, line.length()); // Das was hinter dem : steht ausschneiden if (line.length() > 0 && line[0] == ' ') // Ist noch ein Leerzeichen übrig und handelt es sich um keine leere Zeile { line.erase(0, 1); // Zeichen entfernen } } line += "\n"; // std::getline entfernt \n, also muss es wieder angefügt werden. Sonst wäre nacher alles in einer Zeile. outFile << line; // In Datei schreiben std::cout << line; // Ach auf der Konsole ausgeben } inFile.close(); // Datei wieder schließen outFile.close(); // ... return 0; }
Sollten da noch Unklarheiten sein, dann benutzt einfach Google und such nach dem entsprechendem Befehl - du findest dann genug weitere Informationen.
-
OMG das ist sau genial
danke !!
-
Hmmm,
ich mach das einfach so...sed -i 's/^[0-9][0-9]*://g' filename...
folgende software: sed --version
GNU sed-Version 4.2.1reguläre Ausdrücke kannst im netz nachlesen
^ =Zeilenanfang
[0-9] gefolgt von einer Ziffer
[0-9]* gefolgt von einer Ziffer oder keiner...(* = 0-undendlich viele)
gefolgt von:
s/ substitute Ausdrucht/ mit /g überall in der datei...
also // bedeuted ersetzen mit nichts...
-
Und sed gibt es auch für Windows.
http://unxutils.sourceforge.net/
-
Hier passt der Spruch... "When your hammer is C++, everything begins to look like a thumb" doch ganz gut ^^
-
Die find&replace-Funktionen des MSVC haben die regular expressions auch drin.
Falls noch ungenutzt, die 'Find Options' des Pop-Ups aufklappen - übersieht man leicht.
Sowie 'use' (regular expressions) angeklickt wird, werden die Buttons mit den Pfeilen aktiviert, die einem mit vorgefertigten Mustern ein wenig helfen.
http://www.regular-expressions.info/reference.html
ist ein zweckmßiger bookmark-link, da man die Dinger wenn's dringend ist immer wieder vergessen hat
-
Dieser Thread wurde von Moderator/in Korbinian aus dem Forum Projekte in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.