Hi Leute,
ich habe einen Code geschrieben, mit dem man txt-Dateien zeilenweise (so die Aufgabenstellung) einlesen kann und hinterher wieder in einen beliebige Datei abspeichern kann.
Code:
#include <iostream>
#include <fstream>
#include <string>
#include <stdlib.h>
using namespace std;
int main(void)
{
char *daten;
char buffer[1024]; //zeilenweise, buffer lässt Zeilenlänge bis 1024 zu
int dateigroesse,i=0;
//Eingabebereich
ifstream datein;
string datei;
string Puffer;
cout <<"Bitte Pfad eingeben!"<< endl;
cout <<"Kompletter Quellpfad: ";
cin >> datei;
datein.open(datei.c_str(), ios_base::in);
//Ausgabebereich
ofstream dataus;
string datraus;
//ifstream dataus;
cout <<"Bitte Pfad eingeben!"<<endl;
cout <<"Kompletter Zielpfad: ";
cin >> datraus;
//dataus.open("d:\\test2.txt");
dataus.open(datraus.c_str(), ios_base::out);
if (datein.good)
{
i=0;
datein.seekg(0L,ios::end); //ios::end, Dateizeiger vom Ende der Datei aus bewegen.
dateigroesse = datein.tellg();
datein.seekg(0L,ios::beg); //ios::beg, Dateizeiger vom Anfang der Datei aus bewegen.
daten = new char[dateigroesse+1];
//while(datein.good()) //Vorgang wiederholen, solange Daten in Zeile vorhanden
while (datein.getline(buffer,1024)) //Liest die korrkte Zeilenanzahl ein!
{
//zeilenweise einlesen
datein.getline(buffer,1024);
cout << buffer << "\n"; //zeilenweise
// Ausgabe; bzw Bearbeitung
dataus << buffer<<"\n"; //Zugriff auf die gerade geöffnete Zeile
i++;
}
datein.close();
dataus.close();
}
else
{
cout << "FEHLER keine Datei gefunden!" <<endl;
}
delete[] daten;
return 0;
}
Die Aufgabenstellung sieht allerdings vor, dass ich mit dem Code nur bestimmte Daten einlese und abspeichere.
Die Quelldatei aus der gelesen weden soll sieht so aus:
0605 23:32:30 A0 Start LoopCycle No. 34907
0605 23:32:40 D0 Provider ID / Count 301 1
0605 23:32:55 A0 Start LoopCycle No. 34908
0605 23:33:06 D0 Provider ID / Count 502 39
0605 23:33:21 A0 Start LoopCycle No. 34909
0605 23:33:46 A0 Start LoopCycle No. 34910
0605 23:34:13 A0 Start LoopCycle No. 34911
0605 23:34:26 D0 Provider ID / Count 7 90
0605 23:34:26 D0 Provider ID / Count 300 1
0605 23:34:41 A0 Start LoopCycle No. 34912
Das Endergebnis soll hinterher so aussehen:
0605 23:32:30 A0 Start LoopCycle No. 34907
0605 23:32:55 A0 Start LoopCycle No. 34908
0605 23:34:13 A0 Start LoopCycle No. 34911
0605 23:34:41 A0 Start LoopCycle No. 34912
Es sollen also nur die Zeilen behandelt werden, in denen nach "Start LoopCycle" keine weitere Zeile mit "Start LoopCycle" direkt folgt.
Es wäre super, wenn mit jemand helfen würde, mir schreiben würde, wo, wie und womit ich meinen Code ergänze um das Problem zu lösen.
Danke
Esel Gast |