Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Poruszanie się po pliku

Ostatnio zmodyfikowano 2016-02-04 14:42
Autor Wiadomość
Ajon
Temat założony przez niniejszego użytkownika
[C++] Poruszanie się po pliku
» 2016-02-04 12:25:17
Witam
Po uruchomieniu poniższego programu, program jakby przeskakuje część pliku. Mianowicie poprawnie wyświetla pozycje początkową jako 0, ale po wczytaniu danej pozycja w programie zmienia się na 57, a nie na 3.
C/C++
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    int a;
    ifstream plik( "dane.txt" );
    if( !plik.good() )
         return 0;
   
    cout << plik.tellg() << endl;
    plik >> a;
    cout << plik.tellg();
    return 0;
}
Plik po którym się poruszam: http://www.mediafire.com/view​/i9711nffrz9jc10/dane.txt
P-144445
darko202
» 2016-02-04 14:42:22
1.
coś jest źle ? tzn. wykonało się niezgodnie z oczekiwaniem

są 3 linie kodu

* czy sprawdziłeś co masz w zmiennej a ? po 
 plik >> a;
tzn. czy operacja wczytania się udała (powinna, ale czy się faktycznie udała)
istotne jest ile znaków przeczytała

* czy nie ma flagi błędu użytej funkcji tellg
tu masz dwie linie 0
 

2.
spróbuj przeczytać ten plik inaczej np. tak jak w przykładzie na http://www.cplusplus.com​/reference/istream/istream​/tellg/


3.
przeczytałem, że na przykład gdy fstream napotka jakikolwiek błąd albo koniec pliku, zostaje w takim stanie wtedy trzeba wywołać funkcję clear()
wpływa na stan wykonywanych funkcji

cytowaną stronę już zamknąłem - może się mylą


Sorry, ale nie chce mi się tego dokładniej sprawdzać
p2 zawsze działa - tzn. próbować inaczej zrobić to co się nie udaje


Powodzenia :)

P-144448
« 1 »
  Strona 1 z 1