Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[C++] Проблема с потоками в C++ 17.12.02 07:41 Число просмотров: 727
Автор: alien <Андрей> Статус: Member
|
Привет!
Такая проблема: при чтении текстового файла (лог Squid'a) при помощи потоков С++ поток встает колом, а конкретно - не перемещается указатель текущей позиции. Вот сам код:
#include <iostream.h>
#include <fstream.h>
int main ()
{
ifstream f ("some_file");
if (!f)
{
cerr << "Ошибка открытия файла!!!" << endl;
exit(1);
}
char str[2048];
while (f.getline(str, 2048))
{
//обработка строки str
}
f.seekg(0, ios::end);
cout << "Текущая позиция в файле : " << f.tellg() << endl;
}
Так вот, если убрать строку f.seekg(0, ios::end); , то tellg() возвращает -1. Если строку оставить, то происходит то же самое. Попытка вставить в условие выхода из цикла !f.eof() , а само чтение строки перенести в тело цикла не принесло успеха.
Что самое удивительное, этот код работает с небольшими файлами в несколько килобайт, но при попытке работать с файлами размером в несколько мегабайт возникают вышеописанные ошибки. Пробовал эту прогу на Borland c++ 3.1 (старенький досовский компилятор) - работает нормально! C++ Builder 6 - ошибка.
Я компилирую gcc 3.2 (ОС Mandrake Linux 9.0).
|
- [C++] Проблема с потоками в C++ - alien 17.12.02 07:41 [727]
|
|
|