Namespaces
Variants
Actions

std::basic_spanstream<CharT,Traits>::span

From cppreference.com
< cpp‎ | io‎ | basic spanstream
 
 
 
std::basic_spanstream
Member functions
Underlying buffer operations
basic_spanstream::span
(C++23)
Non-member functions
 
std::span<CharT> span()constnoexcept;
(1) (since C++23)
void span(std::span<CharT> s )noexcept;
(2) (since C++23)
1) Gets a span referencing the written area if std::ios_base::out is set in the open mode of the wrapped std::basic_spanbuf, or a span referencing the underlying buffer otherwise.
2) Makes the wrapped std::basic_spanbuf perform I/O on the buffer referenced by s.

Contents

[edit]Parameters

s - std::span referencing the storage to be use as the new underlying buffer of stream

[edit]Return value

1) A std::span referencing the underlying buffer or written area, depending on the open mode of the wrapped std::basic_spanbuf.
2) (none)

[edit]Example

#include <cassert>#include <iostream>#include <span>#include <spanstream>   int main(){char out_buf[16];std::ospanstream ost{std::span<char>{out_buf}}; ost <<"C++"<<' '<<23<<'\0';// note explicit null-terminationauto sp = ost.span();assert( sp[0]=='C'&& sp[1]=='+'&& sp[2]=='+'&& sp[3]==' '&& sp[4]=='2'&& sp[5]=='3'&& sp[6]=='\0');std::cout<<"sp.data(): ["<< sp.data()<<"]\n";std::cout<<"out_buf: ["<< out_buf <<"]\n";// spanstream uses out_buf as internal storage, no allocationsassert(static_cast<char*>(out_buf)== sp.data());   constchar in_buf[]="X Y 42";std::ispanstream ist{std::span<constchar>{in_buf}};assert(static_cast<constchar*>(in_buf)== ist.span().data());char c; ist >> c;assert(c =='X'); ist >> c;assert(c =='Y');int i; ist >> i;assert(i ==42); ist >> i;// buffer is exhaustedassert(!ist);}

Output:

sp.data(): [C++ 23] out_buf: [C++ 23]

[edit]See also

obtains or initializes an underlying buffer according to mode
(public member function of std::basic_spanbuf<CharT,Traits>)[edit]
close