P
Hallo,
ich weis nicht wieviele Daten du hast. Ich hab zwei Versionen, von denen ich dir aber nicht sagen ob sie nun wirklich schneller sind. Ich kanns mir nur vorstellen.
std::ifstream FileIn("CIS\\converted.txt");
FileIn.ignore(33,'\n');
for(std::string id;FileIn.getline(id,4);){
if(std::find(vplayer.begin(),vplayer.end(),id)==vplayer.end())
vplayer.push_back(id);
}
FileIn.close();
std::string id;
for(int j=0;j<vplayer.size();j++){
std::ifstream FileIn1("CIS\\converted.txt");
std::ofstream convertedLogfile;
std::string pfad = "CIS\\"+vplayer[j];
// Playerlogfile öffnen und mit der for-schleife Einträge anhängen
convertedLogfile.open(pfad.c_str(),ios::app);
for(std::string Read1; std::getline(FileIn1, Read1);){
id = Read1.substr(34,4);
if(id == vplayer[j])
convertedLogfile<<Read1<<endl;
}
convertedLogfile.close();
FileIn1.close();
}
Verison 2 mit ner map was probleme bei großen datenmengen geben könnte
std::map<std::string,std::string> id_map;
ifstream FileIn("CIS\\converted.txt");
std::string id;
for(std::string Read;std::getline(FileIn1, Read1);){
id = Read1.substr(34,4);
if(std::find(vplayer.begin(),vplayer.end(),id)==vplayer.end()){
vplayer.push_back(id);
id_map[id]+=Read1+"\n";
}else{
id_map[id]+=Read1+"\n";
}
}
for(int j=0;j<vplayer.size();j++){
std::ofstream convertedLogfile;
std::string pfad = "CIS\\"+vplayer[j];
// Playerlogfile öffnen und mit der for-schleife Einträge anhängen
convertedLogfile.open(pfad.c_str(),ios::app);
convertedLogfile<<id_map[vplayer[j]]<<endl;
convertedLogfile.close();
}
Ist beides ungetestet, aber evtl. hilfts ja.
[Edit]Logischer Fehler[/Edit]