Je dois faire une fonction qui chaque fois que je clique sur le bouton, le programme lit et agit selon une ligne dans le fichier log_p.txt. Cependant, si je mets le processus read t à l'intérieur de la fonction, il lira chaque fois la première ligne.Je dois utiliser getline() à chaque fois que la fonction est appelée. Comment éviter de répéter la lecture des mêmes lignes dans txt? C++
void ai_fight::getfile()
{
std::ifstream t("log_p.txt");
ui->pushButton->setEnabled(false);
getline(t, rule);
print_rule(rule);
if(getline(t, p1hand)) print_p1hand(p1hand);
if(getline(t, p1p)) print_p1p(p1p);
if(getline(t, p2hand)) print_p2hand(p2hand);
if(getline(t, p2p)) print_p2p(p2p);
getline(t, announce);
if(announce=="1 eliminated"||announce=="0 eliminated")
{
getline(t, buf);
getline(t, buf);
getline(t, buf);
getline(t, buf);
getline(t, win);
print_win(win);
ui->pushButton->setEnabled(true);
}
else if(announce=="0 winning"||announce=="1 winning")
{
ui->pushButton->setEnabled(true);
}
else qDebug()<<"----------announcement error"<<endl;
ui->pushButton->setEnabled(true);
}
"Cependant, si je mets le processus de lecture t à l'intérieur de la fonction, chaque fois qu'il lira la première ligne." Je ne comprends pas vraiment ce que vous voulez dire par là. La nature de 'std :: ifstream' après l'ouverture d'un fichier est de commencer à lire à partir du premier caractère du fichier. Est-ce que vous n'avez * pas * l'intention de le faire? – Aconcagua
Y at-il une raison pour laquelle vous ne pouvez pas lire tout le fichier en mémoire? Quelque chose comme un vecteur de chaînes? –