Чтение частичного файлового потока в строку с использованием итераторов

Это то, что я пробовал до сих пор, но безуспешно:

std::string ReadPartial( std::ifstream& _file, int _size )
{
    std::istreambuf_iterator<char> first( _file );
    std::istreambuf_iterator<char> last( _file );
    std::advance( last, _size );
    return std::string( first, last ); 
}

Я знаю, как читать весь файл.

std::string Read( std::ifstream& _file )
{
    std::istreambuf_iterator<char> first( _file );
    std::istreambuf_iterator<char> last();
    return std::string( first, last ); 
}

Но это не то, что я хочу делать. Получаю пустую строку. Если я смотрю на первое и последнее в отладчике, они указывают на одно и то же даже после std :: advance.

6
задан Alien_SM 3 November 2010 в 12:13
поделиться