чтение буферизованных текстовых данных в строку - PullRequest
1 голос
/ 30 марта 2011

Привет. Я хочу прочитать данные из зависшего текстового файла непосредственно в строку. Я знаю, что могу использовать следующее:

ifstream infile("myfile");
string str(istreambuf_iterator<char>(infile), istreambuf_iterator<char>());

, но таким образом можно прочитать весь файл за один шаг.Я хочу прочитать это в несколько шагов, потому что это очень большой файл около 50 ГБ.Как я могу это сделать?спасибо за совет Герцль.

Ответы [ 2 ]

1 голос
/ 30 марта 2011

Я бы сделал что-то вроде этого (bufSize можно изменить в соответствии с вашими потребностями):

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

void ReadPartially(const char *file)
{
    const unsigned bufSize = 10;
    ifstream is(file);
    string str(bufSize, '\0');
    unsigned count=0;
    while(!is.eof())
    {
        count++;
        is.read(&str[0], bufSize);
        cout << "Chunk " << count << ":[" << endl << str  << "]" << endl;
    }
}
0 голосов
/ 30 марта 2011

Я бы пошел со старым добрым fopen и fread, они дают вам больше контроля в таких ситуациях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...