Вернуться   Программирование для SEO » Программирование » C++
Ответ
 
Опции темы Опции просмотра
  #1  
Старый 10.08.2009, 18:57
Аватар для Amster
Amster Amster вне форума
Новичок
 
Регистрация: 10.08.2009
Сообщений: 3
Amster на пути к лучшему
По умолчанию Блочное чтение

хотелось бы организовать чтение лог-файлов блоками. как это правильно сделать?
если удастся это сделать, то, возможно, не нужен будет распределитель памяти.
__________________
Запомни, Нео, есть два способа войти в Матрицу - либо интерфейсный кабель в затылок, либо силовой в жопу. .
Ответить с цитированием
  #2  
Старый 13.05.2010, 00:33
Аватар для progger
progger progger вне форума
Новичок
 
Регистрация: 12.05.2010
Адрес: Москва
Сообщений: 16
progger на пути к лучшему
По умолчанию

Где-то так:
Код:
{
#define BUF_SIZE  (0x4000000)
    char* buf = new  char[BUF_SIZE];
    uint64  bytesRead = 0;
    while(есть еще  файлы для чтения)
    {
        QFile myfile("bla-bla-bla");
        if  (myfile.size() > BUF_SIZE - bytesRead)   //  больше нет места в буфере
            break;
        uint64 reallyRead =  myfile.read(&buf[bytesRead], myfile.size());
        assert(reallyRead  == myfile.size());
        bytesRead += reallyRead;
    }
    // ... тут что-то делаем с buf
    delete[] buf;
}
Ну и не забывай, конечно, про обработку ошибок QFile и иже с ним. Ну и buf лучше завернуть в boost::shared_array хотя бы - во избежание
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +3, время: 10:31.