Alle bestanden regel per regel doorzoeken op een lijst aan referenties.
Per gevonden referentie de referentie en verbruik weergeven.
Verschillende problemen.
1. De laatst ingevoerde entry in de database word niet gezocht. (vast iets mis met de query in een vector te stoppen, code niet included hieronder.)
2. De eerste eerste match in het eerste bestand word gevonden, de rest niet meer. Al word deze wel nog gezocht.
Vast iets met de loop maar ik zit me er ondertussen blind op te staren.
PS : buiten de for loop (met een vaste zoekwaarde, vind hij de vaste waarde wel in beide bestanden.)
Code: Selecteer alles
void MainWindow::Zoekmatch(std::string bestand){
std::string regel;
// Bestand openen om in te lezen
std::ifstream file; //(bestand.c_str());
file.open (bestand.c_str());
ui->textBrowserLog->append("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
ui->textBrowserLog->append(tr("INGELEZEN BESTAND : %1").arg(bestand.c_str()));
if(file.is_open()){
// Bestand doorzoeken op referenties
for(int i=0; i < zoektermen.size(); i++){
search = zoektermen[i];
ui->textBrowserLog->append(tr("GEZOCHT : %1").arg(search.c_str()));
while(getline(file, regel)) {
//******************************* ZOEK WAAR SEARCH VOORKOMT EN DOE: *******************************
if (regel.find(search, 0) != std::string::npos) {
//******************************* CONTROLEER WELKE REGEL MET SEARCH BEGINT: *******************************
std::istringstream iss(regel);
std::string sub1;
iss >> sub1;
if(sub1==search){
//******************************* Regel met search gevonden, steek alles in een vector (lijn): *******************************
ui->textBrowserLog->append(tr("GEVONDEN : %1").arg(search.c_str()));
std::istringstream iss(regel);
do
{
std::string sub;
iss >> sub;
lijn.push_back(sub);
} while (iss);
//******************************* Controleer of ralkleur gekend is : *******************************
if(is_number(lijn.at( 1 ))==true){
ralkleur=lijn.at( 1 );
if(lijn.at( 2 ) == "ST" || lijn.at( 2 ) == "LC" || lijn.at( 2 ) == "M"){
std::string ralxt = lijn.at( 2 );
ralkleur.append(" ");
ralkleur.append(ralxt);
}
ui->textBrowserLog->append(tr("RALKLEUR : %1").arg(ralkleur.c_str()));
}
//******************************* Zoek verbruik : *******************************
for (unsigned n=3; n<lijn.size(); n++) {
if(is_number(lijn.at( n ))==true){
ui->textBrowserLog->append(tr("VERBRUIK : %1").arg(lijn.at(n).c_str()));
}
}
lijn.clear();
}
}
}
} //for
file.close();
}// if file open
} //einde