Virtual Void Posted January 18, 2007 at 03:59 PM Report Share #77081 Posted January 18, 2007 at 03:59 PM Boas. è o seguinte. tenho um ficheiro de texto com o seguinte la escrito(formatação igual ao file): Joao 2344 Mecanica Ordinario Mestrado Miguel 5432 Ciencias Especial Licenciatura Carlos 8768 Matematica Ordinario Douturamento o conteudo dest ficheiro vai ser lido pelo meu programa da seguinte forma: while(!input.eof()) { input>> nome >>numero>>cadeira>>regime >>situacao; //ifstream input("File.txt"); l.adiciona(nome,numero,cadeira,regime,situacao); //adiciona o que foi lido do file a uma lista ligada } No entanto este pedaço de codigo faz uma leitura a mais do que devia. Desconfio que seja porque o EOF nao é encontrado no final da ultima leitura e por isso entra de novo no ciclo while. Estou correcto? Como posso fazer para resolver este problema sem alterar a forma de fazer o input, ou seja continuar a utilizar o >> e nao utilizar get ou read ou seja o que for. Obrigado Cumprimentos Link to comment Share on other sites More sharing options...
Warrior Posted January 18, 2007 at 06:55 PM Report Share #77127 Posted January 18, 2007 at 06:55 PM o eof só retorna true depois de ele tentar ler um dado do ficheiro e não conseguir. Eu so programo C, mas adicionaria depois do input >> um "if (input.eof()) break;" Link to comment Share on other sites More sharing options...
brink@ero Posted January 21, 2007 at 12:00 AM Report Share #77529 Posted January 21, 2007 at 12:00 AM Não sei, mas acho que ele faz uma leitura a mais devido a um "enter". Verefica se o ficheiro termina mesmo no final da palavra Doutoramento, ou se tens algo assim "Doutoramento\n" ou "Doutoramento\n\n". Se for isto, o infile.eof() lê o '\n' e entra no ciclo. Para tirar as teimas, usa a função int peek ( ); lê o char inicial de cada ciclo sem "mexer em nada", assim saberás qual foi o char que o infile.eof() leu onde devia parar. Cumpr. bk@ero 😛 Link to comment Share on other sites More sharing options...
Virtual Void Posted January 25, 2007 at 12:18 AM Author Report Share #78421 Posted January 25, 2007 at 12:18 AM Obrigado Pessoal Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now