Попробуйте прочитать определенное количество данных в указанном смещение перед возвращением.
template<
typename SyncRandomAccessReadDevice,
typename MutableBufferSequence>
std::size_t read_at(
SyncRandomAccessReadDevice & d,
uint64_t offset,
const MutableBufferSequence & buffers);
Эта функция используется для считывания определенного количества байтов данных с устройства случайного доступа в указанном смещение. Звонок будет блокироваться до тех пор, пока не будет выполнено одно из следующих условий:
- Поставляемые буферы заполнены. То есть переданные байты равны сумме буферных размеров.
- Произошла ошибка.
Эта операция реализована с точки зрения нуля или более вызовов функции read_some_at устройства.
- d
Устройство, с которого следует считывать данные. Тип должен поддерживать концепцию SyncRandomAccessReadDevice.
- offset
Смещение, при котором будут считаны данные.
- buffers
Один или несколько буферов, в которые будут считываться данные. Сумма размеров буфера указывает на максимальное количество байтов для чтения с устройства.
Количество переданных байтов.
- boost::system::system_error
Выброшен на провал.
Для считывания в единый буфер данных используют функцию<buffer
>следующим образом:
boost::asio::read_at(d, 42, boost::asio::buffer(data, size));
См. документацию<buffer
>для информации о считывании в несколько буферов за один ход, и как использовать ее с массивами, нарастить::array или std::vector.
Эта перегрузка эквивалентна вызову:
boost::asio::read_at(
d, 42, buffers,
boost::asio::transfer_all());