Leerzeilen aus txt entfernen



  • Hallo liebe Programmierergemeinde,
    bitte helft mir mit meinem Code.

    Ich versuche aus einer Textdatei alle Leerzeilen zu entfernen und in OUT.txt neu abzuspeichern.

    #include <fstream>
    
    int main() {
    
    std::ifstream INHDAT("IN.txt");
    std::ofstream OUTDAT("OUT.txt");
    std::string ZEILEN;
    
    for (std::size_t Z = 0; std::getline(INHDAT, ZEILEN); ++Z)
    if ( ZEILEN == "" )
    {} else {
    int TEXNEU = TEXNEU + ZEILEN } // bin mir nicht ganz sicher wie ich das machen soll
    
    OUTDAT << TEXNEU << std::endl;
    

    Vielen Dank schonmal und freundliche Grüße. 😃



  • In letzter Zeit scheint es gerade "in" zu sein, Jagd auf Leerzeichen zu machen... 🕶

    Schau zum Beispiel mal hier.



  • Nexus schrieb:

    In letzter Zeit scheint es gerade "in" zu sein, Jagd auf Leerzeichen zu machen... 🕶

    Schau zum Beispiel mal hier.

    Die sind wie Geister. Die sind eigentlich gar nicht da,aber machen dir trotzdem Probleme. 🙂



  • Leerzeilen entfernen geht z.B. so:

    #include <algorithm> // remove_copy_if
    #include <iostream>
    #include <fstream>
    #include <iterator> // istreambuf_iterator
    
    struct EmptyLineRemover
    {
        EmptyLineRemover() : m_prev(0) {}
        bool operator()( char c )
        {
            const char LF = '\n';
            if( m_prev == LF && c == LF )
                return true; // true: remove
            m_prev = c;
            return false;
        }
    private:
        char m_prev; // Vorgängerzeichen
    };
    
    int main()
    {
        using namespace std;
        ifstream inhdat("IN.txt");
        ofstream outdat("OUT.txt");
        remove_copy_if( istreambuf_iterator< char >( inhdat ), istreambuf_iterator< char >(),
            ostreambuf_iterator< char >( outdat ), EmptyLineRemover() );
    
        return 0;
    }
    

    wozu braucht man den sowas?

    Gruß
    Werner



  • Vielen Dank

    Grüße waldgnarf



  • Huh, da hatte ich wohl zu schnell gelesen... Sorry. 🙄


Anmelden zum Antworten