Namespaces
Variants

std::basic_ispanstream<CharT,Traits>:: basic_ispanstream

From cppreference.net

explicit basic_ispanstream ( std:: span < CharT > s, std:: ios_base :: openmode mode =
std:: ios_base :: in ) ;
(1) (自 C++23 起)
template < class ROS >
explicit basic_ispanstream ( ROS && r ) ;
(2) (自 C++23 起)
basic_ispanstream ( basic_ispanstream && rhs ) ;
(3) (自 C++23 起)
basic_ispanstream ( const basic_ispanstream & ) = delete ;
(4) (自 C++23 起)

构造一个新的 basic_ispanstream

1) 使用 s 引用的存储作为包装的 std::basic_spanbuf 设备的初始底层缓冲区。包装的 std::basic_spanbuf 对象被构造为 basic_spanbuf < Char, Traits > ( s, mode | std:: ios_base :: in )
2) 使用 r 转换后所引用的存储作为包装的 std::basic_spanbuf 设备的初始底层缓冲区。包装的 std::basic_spanbuf 对象以 std::ios_base::in 模式打开。此重载仅当 ROS 满足 borrowed_range 概念、 std:: convertible_to < ROS, std:: span < CharT >> false std:: convertible_to < ROS, std:: span < const CharT >> true 时参与重载决议。
3) 移动构造函数。移动构造 std::basic_istream 基类子对象及包装的 std::basic_spanbuf 对象(从 rhs 对应对象),随后调用 set_rdbuf 并传入当前对象 * this 中包装的 std::basic_spanbuf 地址以完成安装。
4) 复制构造函数被删除。 basic_ispanstream 不可复制。

目录

参数

s - std::span 引用将用作流初始底层缓冲区的存储空间
r - 将用作流初始底层缓冲区的 borrowed_range
mode - 指定流打开模式。可使用以下常量及其按位或组合:
常量 说明
app 每次写入前定位到流末尾
binary 二进制模式 打开
in 为读取打开
out 为写入打开
trunc 打开时清空流内容
ate 打开后立即定位到流末尾
noreplace (C++23) 以独占模式打开
other - 要移动来源的另一个 basic_ispanstream

异常

可能抛出实现定义的异常。

示例

#include <print>
#include <spanstream>
#include <string>
int main()
{
    std::ispanstream is("1 2 3 abc");
    int i, j, k;
    std::string w;
    is >> i >> j >> k >> w;
    std::print("i={}, j={}, k={}, w={}", i, j, k, w);
}

输出:

i=1, j=2, k=3, w=abc

参见

构造 basic_spanbuf 对象
( std::basic_spanbuf<CharT,Traits> 的公开成员函数)