по результатам:
--0 0
--1 2
--2 20
--3 0
BONJOUR MA BICHETTE
--4 -1
is_open
--5 -1
--6 -1
7 20
8 0
------- C CODE----------
++1 0
++2 20
++3 0
->BONJOUR MA BICHETTE
feof encountered
++4 20
++5 0
Program ended with exit code: 0
почему это выглядит
- 1 2
с
ifsA.seekg (0, std :: ios_base :: end);
вместо
- 1 20 (потому что размер файла равен 20!)
почему ничего не видно с
if (fsA.eof ())
зачем нужно делать
ifsA.clear ();
чтобы получить
7 20
разочарован
# включая
# включает
с использованием пространства имен std;
int main (int argc, const char * argv []) {
const char * c = "/ Users / uio / Desktop / C ++ _ PROB_SEEKG / C ++ _ PROB_SEEKG / 1.txt";
ifstream ifsA (c);
if (ifsA) {
Строка Ligne;
cout << "- 0" << ifsA.tellg () << endl; </p>
ifsA.seekg (std :: ios_base :: end);
cout << "- 1" << ifsA.tellg () << endl; </p>
ifsA.seekg (0, std :: ios_base :: end);
cout << "- 2" << ifsA.tellg () << endl; </p>
ifsA.seekg (ios_base :: beg);
cout << "- 3" << ifsA.tellg () << endl; </p>
while (getline (ifsA, ligne)) {
cout << ligne << endl; </p>
}
cout << "- 4" << ifsA.tellg () << endl; </p>
if (ifsA.is_open ())
cout << "is_open" << endl; </p>
ifsA.seekg (ios_base :: beg);
cout << "- 5" << ifsA.tellg () << endl; </p>
ifsA.seekg (0, ios_base :: beg);
cout << "- 6" << ifsA.tellg () << endl; </p>
if (ifsA.eof ())
cout << "eof" << endl; </p>
// https://stackoverflow.com/questions/16364301/whats-wrong-with-the-ifstream-seekg
ifsA.clear ();
cout << "7" << ifsA.tellg () << endl; </p>
if (ifsA.eof ())
cout << "eof" << endl; </p>
ifsA.seekg (ios_base :: beg);
cout << "8" << ifsA.tellg () << endl; </p>
}
else {
cerr << "ifstream !!" << endl; </p>
выход (1);
}
ставит ("------- КОД ----------");
# include
FILE * f = fopen (c, "r");
char buf [BUFSIZ];
if (f == NULL) {
perror ("fopen");
выход (1);
}
else {
printf ("++ 1% ld \ n", ftell (f));
fseek (f, 0, SEEK_END);
printf ("++ 2% ld \ n", ftell (f));
fseek (f, 0, SEEK_SET);
printf ("++ 3% ld \ n", ftell (f));
while (fgets (buf, BUFSIZ, f)! = NULL) {
printf ("->% s \ n", buf);
}
if (feof (f)) {
printf ("% s \ n", "встречено feof");
}
printf ("++ 4% ld \ n", ftell (f));
fseek (f, 0, SEEK_SET);
printf ("++ 5% ld \ n", ftell (f));
fclose (f);
}
возврат 0;
}