Sector1379
02-01-2007, 17:02
Hallo zusammen ,
ich habe folgendes Problem ich will eine datei einlesen in der ich jeden string zunächst untersuchen muss um ihn dann weiter verarbeiten zu können.
Nun lese ich ganz normal mit getline die erste zeile ein hier mal der code block:
void read_from_file(Artikel **artikel){
string line;
ifstream input_file("data");
while(!input_file.eof()){
getline(input_file, line);
string::size_type elek = line.find("elektro,");
int used = Artikel::artikelAnzahl();
if(!(elek == string::npos)){
artikel[used] = new ElektroArtikel;;
input_file >>*artikel[used];
}
}
input_file.close();
}
So nun ich das Problem das die function für die Operator überladung wieder sich eine Zeile holt um diese dann zu verarbeiten. Und genau da ist das Problem da ich ja schon mal getline genutzt habe und ich wieder getline über eine referenz mache bin ich dann nicht in der zeile für die die bedinung stimmt sondern in der nächsten. Wie kann nun quasi in der weiter verarbeitung in die vorletzte zeile springen ??? Ich darf die Prototypen nicht verändern die stehen so fest.
Hier noch mal die andern code schnipsel.
void ElektroArtikel::eingabeDatei( istream& ein ){
string line;
cout << line << endl; // das ist nur mal schnell zum tesen für die zeilen hier kommt nacher die richtige verarbeitung
}
istream& operator>> ( istream& ein, Artikel& arti ){
string art_num, art_preis, art_bez;
if(typeid(ein) == typeid(ifstream)) arti.eingabeDatei(ein);
}
Ich hoffe mir kann jemad von euch da weiter helfen. Ich würde mich jedenfalls riesig freuen denn ich sitzte schon stunden an diesem zeilen Problem.
ich habe folgendes Problem ich will eine datei einlesen in der ich jeden string zunächst untersuchen muss um ihn dann weiter verarbeiten zu können.
Nun lese ich ganz normal mit getline die erste zeile ein hier mal der code block:
void read_from_file(Artikel **artikel){
string line;
ifstream input_file("data");
while(!input_file.eof()){
getline(input_file, line);
string::size_type elek = line.find("elektro,");
int used = Artikel::artikelAnzahl();
if(!(elek == string::npos)){
artikel[used] = new ElektroArtikel;;
input_file >>*artikel[used];
}
}
input_file.close();
}
So nun ich das Problem das die function für die Operator überladung wieder sich eine Zeile holt um diese dann zu verarbeiten. Und genau da ist das Problem da ich ja schon mal getline genutzt habe und ich wieder getline über eine referenz mache bin ich dann nicht in der zeile für die die bedinung stimmt sondern in der nächsten. Wie kann nun quasi in der weiter verarbeitung in die vorletzte zeile springen ??? Ich darf die Prototypen nicht verändern die stehen so fest.
Hier noch mal die andern code schnipsel.
void ElektroArtikel::eingabeDatei( istream& ein ){
string line;
cout << line << endl; // das ist nur mal schnell zum tesen für die zeilen hier kommt nacher die richtige verarbeitung
}
istream& operator>> ( istream& ein, Artikel& arti ){
string art_num, art_preis, art_bez;
if(typeid(ein) == typeid(ifstream)) arti.eingabeDatei(ein);
}
Ich hoffe mir kann jemad von euch da weiter helfen. Ich würde mich jedenfalls riesig freuen denn ich sitzte schon stunden an diesem zeilen Problem.