Wenn fertig, bitte Fenster schließen
|
// Lösung zur string Klasse // Dateien einbinden #include <iostream> #include <fstream> #include <string> #include <cstdlib> #include <cctype> using std::cout; using std::endl; // Ein- und Ausgabedatei const char* const pIFILE = "gcc.mak"; const char* const pOFILE = "conv.mak"; // main() Funktion int main() { // string Objekt in dem der gesamte von Kommentaren und Leerzeilen // befreite Dateiinhalt von pIFILE abgelegt wird std::string resString; // Eingabedatei öffnen std::ifstream inFile(pIFILE); if (!inFile) { cout << "Fehler beim Öffnen der Datei " << pIFILE << endl; exit(1); } // Datei komplett durchlaufen do { // string Objekt für einzelne Zeile aus der Datei std::string line; // Komplette Zeile einlesen std::getline(inFile,line); // Falls noch nicht Dateiende erreicht if (!inFile.eof()) { // Wenn Zeile nicht Kommentarzeile und nicht Leerzeile if ((line[0] != '#') && (line.size() != 0)) { // Zeile zum neuen Dateiinhalt hinzufügen resString += line; // Zeilenvorschub nicht vergessen! resString += '\n'; } } } while (!inFile.eof()); // Eingabedatei schliessen inFile.close(); // Jetzt alles in Grossbuchstaben wandeln // Die Umwandlung wäre mit Hilfe von Iteratoren eleganter, diese werden // aber erst später eingeführt for (unsigned int index=0; index<resString.size(); index++) resString[index] = std::toupper(resString[index]); // Ausgabedatei öffnen std::ofstream outFile(pOFILE); if (!outFile) { cout << "Fehler beim Öffnen der Datei " << pOFILE << endl; exit(1); } // Neuen Dateiinhalt in Datei übertragen outFile << resString; // Ausgabedatei schliessen outFile.close(); } |