Neojag
Power Member
Estou a ler linhas de um ficheiro de texto, e quando o programa encontra uma determinada linha, retorna a linha seguinte. O problema é que depois preciso de voltar ao início da stream e voltar a fazer o scan todo mas não consigo fazê-lo, assim que ele encontra o EOF nunca mais retorna nada. Ou seja, ele responde à primeira questão, mas a segunda se estiver mais abaixo na lista já não retorna nada. Tentei usar origem.clear() e abrir e fechar o ficheiro, mas nenhuma delas resultou. Alguém me pode elucidar sobre o que está mal com este algoritmo?
Obrigado
O ficheiro de texto contém:
Who are you?
I am the knight who says NI!
Where are you going?
Not to Camelot... It is a silly place!
Are you the messiah?
Yes, I'm the messiah. NOW **** OFF
Edit: descobri agora uma coisa, ele só deixa de retornar respostas em duas situações: se "pergunta" for a última pergunta da lista ou se for uma qualquer coisa que não lá esteja.
Obrigado
Código:
while (x==0){
getline(cin, pergunta);
origem.clear();
while(!origem.eof()){
getline(origem,temp);
if (temp==pergunta){
getline(origem,resposta);
cout << resposta << endl;
encontrada = true;
break;
}
}
if (encontrada == false) cout << "Pergunta outra coisa ó Nabo!\n";
}
O ficheiro de texto contém:
Who are you?
I am the knight who says NI!
Where are you going?
Not to Camelot... It is a silly place!
Are you the messiah?
Yes, I'm the messiah. NOW **** OFF
Edit: descobri agora uma coisa, ele só deixa de retornar respostas em duas situações: se "pergunta" for a última pergunta da lista ou se for uma qualquer coisa que não lá esteja.
Última edição: