Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::as_bytes,std::as_writable_bytes

      From cppreference.com
      <cpp‎ |container‎ |span
       
       
       
       
      Defined in header<span>
      template<class T,std::size_t N>

      std::span<conststd::byte, S/* see below */>

          as_bytes(std::span<T, N> s)noexcept;
      (1)(since C++20)
      template<class T,std::size_t N>

      std::span<std::byte, S/* see below */>

          as_writable_bytes(std::span<T, N> s)noexcept;
      (2)(since C++20)

      Obtains a view to the object representation of the elements of the spans.

      IfN isstd::dynamic_extent, the extent of the returned spanS is alsostd::dynamic_extent; otherwise it issizeof(T)* N.

      as_writable_bytes only participates in overload resolution ifstd::is_const_v<T> isfalse.

      [edit]Return value

      1) A span constructed with{reinterpret_cast<conststd::byte*>(s.data()), s.size_bytes()}.
      2) A span constructed with{reinterpret_cast<std::byte*>(s.data()), s.size_bytes()}.

      [edit]Example

      Run this code
      #include <cstddef>#include <iomanip>#include <iostream>#include <span> void print(floatconst x,std::span<conststd::byte>const bytes){std::cout<<std::setprecision(6)<<std::setw(8)<< x<<" = { "<<std::hex<<std::uppercase<<std::setfill('0');for(autoconst b: bytes)std::cout<<std::setw(2)<<std::to_integer<int>(b)<<' ';std::cout<<std::dec<<"}\n";} int main(){/* mutable */float data[1]{3.141592f}; autoconst const_bytes= std::as_bytes(std::span{data});     print(data[0], const_bytes); autoconst writable_bytes= std::as_writable_bytes(std::span{data}); // Change the sign bit that is the MSB (IEEE 754 Floating-Point Standard).    writable_bytes[3]|=std::byte{0B1000'0000};     print(data[0], const_bytes);}

      Possible output:

       3.14159 = { D8 0F 49 40 }-3.14159 = { D8 0F 49 C0 }

      [edit]See also

      implicitly creates objects in given storage with the object representation reused
      (function template)[edit]
      (C++17)
      the byte type
      (enum)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/container/span/as_bytes&oldid=159753"

      [8]ページ先頭

      ©2009-2025 Movatter.jp