Boost C++ 库

...世界上最受推崇、设计最精湛的 C++ 库项目之一。 Herb SutterAndrei AlexandrescuC++ Coding Standards

read_at (8个重载中的1个) - Boost C++ 函数库
PrevUpHomeNext

尝试在指定的偏移量读取一定量的数据,然后返回。

template<
    typename SyncRandomAccessReadDevice,
    typename MutableBufferSequence>
std::size_t read_at(
    SyncRandomAccessReadDevice & d,
    uint64_t offset,
    const MutableBufferSequence & buffers);

此函数用于在指定偏移量从随机访问设备读取一定数量的字节。调用将阻塞,直到以下条件之一成立:

  • 提供的缓冲区已满。即,传输的字节数等于缓冲区大小的总和。
  • 发生错误。

此操作通过零次或多次调用设备的 read_some_at 函数来实现。

参数

d

要从中读取数据的设备。该类型必须支持 SyncRandomAccessReadDevice 概念。

offset

将读取数据的偏移量。

缓冲区

一个或多个将要读取数据的缓冲区。缓冲区大小的总和表示从设备读取的最大字节数。

返回值

传输的字节数。

异常

boost::system::system_error

失败时抛出。

示例

要将数据读取到单个缓冲区中,请使用 buffer 函数,如下所示:

boost::asio::read_at(d, 42, boost::asio::buffer(data, size));

有关一次读取多个缓冲区的信息,以及如何将其与数组、boost::array 或 std::vector 一起使用,请参阅 buffer 文档。

备注

此重载等同于调用

boost::asio::read_at(
   d, 42, buffers,
   boost::asio::transfer_all());

PrevUpHomeNext