!file.eof() что происходит на последней итерации? [дубликат]

248
24 ноября 2017, 07:26

На данный вопрос уже ответили:

  • Почему считается что неправильно писать while (!input_stream.eof())? 2 ответа

Доброго вечера. Подскажите, почему данный код:

while (!file.eof())
{
    file >> p1.x >> p1.y;
    MyVector.push_back(p1);
    cout << p1.x << " " << p1.y<<endl;
}

При такой информации в файле:

0 0
0 10
10 10
10 0

Выведет следующее:

0 0 
0 10
10 10
10 0
10 0 

и соответственно размер вектора будет равен 5?

P.S. надо обойти этот момент

Answer 1

Не делайте так: while (!file.eof())

Эта проверка сработает только после неудачного чтения за концом файла.

А вы здесь

file >> p1.x >> p1.y;
MyVector.push_back(p1);

удачность чтения не проверяете...

Ну, раз @ixSci настаивает... [Менторским тоном] - надо вот так:

while (file >> p1.x >> p1.y)
{
    MyVector.push_back(p1);
    cout << p1.x << " " << p1.y<<endl;
}
READ ALSO
выделение памяти в методе класса

выделение памяти в методе класса

здравствуйтевопрос такой

213
shared_ptr умные указатели

shared_ptr умные указатели

не работает инкрементПодскажите как реализовать инкремент через shared_ptr??

216
Буферизация stdout, работа fflush

Буферизация stdout, работа fflush

Что делает fflush? Многие пишут,что эта функция дает команду ОС сбросить содержимое буфера на дискНо разве этим занимается ОС? Насколько я понял...

246
Помогите поставить заглушку в тесте

Помогите поставить заглушку в тесте

Есть метод, который нужно протестировать:

182