I/O manipulators | ||||
Print functions(C++23) | ||||
C-style I/O | ||||
Buffers | ||||
(C++23) | ||||
(C++98/26*) | ||||
(C++20) | ||||
Streams | ||||
Abstractions | ||||
File I/O | ||||
String I/O | ||||
Array I/O | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
(C++98/26*) | ||||
(C++98/26*) | ||||
(C++98/26*) | ||||
Synchronized Output | ||||
(C++20) | ||||
Types | ||||
Error category interface | ||||
(C++11) | ||||
(C++11) |
std::span<CharT> span()constnoexcept; | (1) | (since C++23) |
void span(std::span<CharT> s)noexcept; | (2) | (since C++23) |
span
referencing the written area ifstd::ios_base::out is set in the open mode of the wrappedstd::basic_spanbuf, or aspan
referencing the underlying buffer otherwise.Contents |
s | - | std::span referencing the storage to be use as the new underlying buffer of stream |
#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]
obtains or initializes an underlying buffer according to mode (public member function of std::basic_spanbuf<CharT,Traits> )[edit] |