Здравствуйте.
Никак не могу разобраться почему программа(см. ниже) работает по разному при изменении первых трех строчек.
#include <fstream.h>
//#include <fstream>
//using namespace std;
int main() {
// в файле "test.txt" 3 символа
ifstream fin("test.txt");
char buf[3];
while (fin.getline(buf, 3))
{
}
fin.close();
return 0;
}
Эта программа работает нормально, читает сначала 2 символа и добавляет '\0' в конец "buf", потом читает оставшийся 1 символ и добавляет '\0'.
Если раскомментировать 2-ю и 3-ю строки и закомментировать 1-ю, программа вообще ничего не читает, повидимому сразу возвращает EOF.
Что это может быть и можно ли это обойти?
Спасибо.
Здравствуйте Алексей,
Если вы используете <fstream> от STL, который идет с Visual C++ (Dinkumware STL),
то скорее всего это его баг. Я уже наталкивался на подобные глюки в его потоковых классах.
На сайте Dinkumware (
www.dinkumware.com) можно найти список багов и как их лечить.
Альтернативный вариант — установить у себя версию STL от STLport (
www.stlport.com)
Успехов,
Yevgeny.