Zeilenumbruch erzwingen



  • Hallo,

    ich möchte einen Code-Beautifier schreiben (bin aber noch ganz am Anfang).

    Mein Programm soll ein Programm einlesen und es dann schön formatiert in einer Datei ausgeben.

    Ich möchte als ersten Schritt erreichen, das nach jedem #include<xxx> ein Zeilenumbruch erzwungen wird.
    Ich lese mein Programm als String ein. Wie mache ich das denn am besten?

    Habe hier schon rumgeschaut, aber noch nichts passendes gefunden.

    Vielleicht mit string replace oder insert?

    Dankeschön für Eure Hilfe

    #include <iostream>
    #include <fstream>
    #include <iomanip>
    #include <string.h>
    using namespace std;
    
    class Input{
    protected:
    		string buffer;
    public:
    	void read(){
    		ifstream file("hallo_Testdatei.txt"); 
            getline(file,buffer);
            file.close();
    		}
    }; 
    
    class Development: public Input { //damit ich auf den Dateiinhalt zugreifen kann
    protected:
    
    public:
    		void change()
    		{
            for(int i=0;i<sizeof(buffer);i++)
    		{
    		//hier möchte ich als erstes den Zeilenumbruvch erzwingen
    		}		
    		}
    
    };
    
    class Output: public Development { // damit ich auf den Dateiinhalt zugreifen kann
    protected:
    public:
    		void output(){
    		ofstream outfile;
    		outfile.open("test.txt");
    		outfile << buffer << endl; 
    		outfile.close();	
    		}
    };
    
    int main(){
    Output o;
    o.read();
    o.change();
    o.output();
    
    return 0;
    }
    


  • Ich würde dir boost_regex empfehlen!



  • Willst du das unbedingt selber schreiben oder willst du nur die Funktion? Im letzteren Fall bietet dir VS eine automatische Formatierungsfunktion. In Eclipse kannst du dazu sogar noch Vorlagen anlegen. Das ist aber eine Standardfunktion von vielen modernen Editoren.



  • Danke für den Tipp! Das kannte ich noch nicht, werde es mir aber gleich mal googeln



  • Also ich muss das im Rahmen eines Programmierpraktikums machen. Der Prof. hat mir da viel Freiraum gelassen wie ich das mache.
    Ich fange gerade an mich mit dem Thema zu beschäftigen und muss gestehen das ich mir noch nicht so im klaren bin, wie ich denn da am besten rangehe. Aber wenn es schon was fertiges gibt, dann muss ich das Rad ja nicht neu erfinden



  • Moment, das Rad musst du natürlich nicht neu erfinden, nur wenn es deine Aufgabe ist, dann kannst du auch nicht einfach sagen gibts schon. Der Prof. will da auch sicher eher sehen, dass du in der Lage bist das Problem zu lösen, ob es gelöst wird spielt da eine untergeordnete Rolle.

    Übrigens eignen sich Script-Sprachen wie Perl für solche Dinge wesentlich besser.



  • Dein Problem ist halt wie für "Regular Expressions" zugeschnitten. Wenn du aber boost noch nicht kennst (es noch nie installiert hast), dann wirst du sicher Probleme haben diese zu verwenden. Aber in der Regel lohnt es sich, denn Boost ist quasi die inoffizielle Erweiterung zum C++ Standard 😉 und wird in Zukunft auch Teil dieses werden.

    http://www.boost.org
    http://www.boost.org/doc/libs/1_45_0/libs/regex/doc/html/index.html

    Ich glaube hier gibt es schon fertige leicht zu installierende Version für windows Microsoft Visual Studio: http://www.boostpro.com/download/

    Ansonsten musst du Boost selbst erstellen...



  • Vielen Dank für Eure Hilfe!!


Anmelden zum Antworten