Bestimmte Einträge aus Datei kopieren und in eine neue Datei schreiben



  • Es tut mir leid das ich heute ein wenig viel poste aber irgendwie fehlt mir der richtige Denkanstoss.
    Hier meine Vorgehensweise

    Es gibt 4 verschiedene Typen von Logdateien, und mein Programm soll erstmal herausfinden um welchen Typ es sich handelt, dies wird anhand des Aufbaus festgestellt, hier ist z.B. der erste Typ:

    2004_04_20_11:31:02.947 0 000
    2004_04_20_11:31:03.346 1012 [hier kommt noch mehr kram]

    Identifizieren wollte ich sie anhand der letzten 6 Zeichen (0 000) bzw. ob zwischen dem 23. und 34. Zeichen Leerzeichen sind und danach 4 Zeichen kommen.
    Ich habe folgendes versucht:

    char a=0,b=0,c=0,d=0,e=0,f=0;
    
    logfile.seekg(28) ;
    logfile>>a;
    cout<<a<<endl;
    
    logfile>>b;
    cout<<b<<endl;
    
    logfile>>c;
    cout<<c<<endl;
    
    logfile>>d;
    cout<<d<<endl;
    
    logfile>>e;
    cout<<e<<endl;
    
    logfile>>f;
    cout<<f<<endl;
    

    Nur habe ich das Problem das er die Leerzeichen überliest, außerem ist das total unglücklich so. Hat jemand eine bessere Idee oder kann mir helfen?



  • Ok, habe jetzt herausgefunden das man mit get ein einzelnes Zeichen (auch leerzeichen) lesen kann.

    Aber ich weiß immer noch nicht wie ich das am besten prüfen soll.
    Habe jetzt daran gedacht man liest alle 6 Zeichen aus und schaut sich die Größe an, nur leider zählen die Leerzeichen auch als zeichen also lässt sich das so nicht feststellen.

    Jetzt bin ich ehrlich gesagt leicht ratlos...



  • Also ich würde das so machen:

    ifstream logfile(position);
    
    string line;
    getline(logfile, line);
    
    if(line.substr(23, 25) == " ")
      cout << "Leerzeichen gefunden" << endl;
    

    Hier kannst Du danach mit "line.substr(ANFANG, ENDE)" noch mehrere String usw. kontrol-lieren.

    MfG Roman1311


Anmelden zum Antworten