Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::filesystem::space_info

      From cppreference.com
      <cpp‎ |filesystem
       
       
      Filesystem library
      Classes
      Functions
      File types
       
      Defined in header<filesystem>
      struct space_info{

         std::uintmax_t capacity;
         std::uintmax_t free;
         std::uintmax_t available;

      };
      (since C++17)

      Represents the filesystem information as determined byfilesystem::space.

      Contents

      [edit]Member objects

      capacity
      total size of the filesystem, in bytes
      (public member object)
      free
      free space on the filesystem, in bytes
      (public member object)
      available
      free space available to a non-privileged process (may be equal or less thanfree)
      (public member object)

      [edit]Non-member functions

      operator==
      (C++20)
      compares twospace_infos
      (function)

      operator==(std::filesystem::space_info)

      friendbool operator==(const space_info&,const space_info&)=default;
      (since C++20)

      Checks ifcapacity,free andavailable of both arguments are equal respectively.

      This function is not visible to ordinaryunqualified orqualified lookup, and can only be found byargument-dependent lookup when std::filesystem::space_info is an associated class of the arguments.

      The!= operator issynthesized fromoperator==.

      [edit]Example

      Run this code
      #include <cstdint>#include <filesystem>#include <iostream>#include <locale> std::uintmax_t disk_usage_percent(const std::filesystem::space_info& si,bool is_privileged=false)noexcept{if(constexprstd::uintmax_t X(-1);        si.capacity==0|| si.free==0|| si.available==0||        si.capacity== X|| si.free== X|| si.available== X)return100; std::uintmax_t unused_space= si.free, capacity= si.capacity;if(!is_privileged){conststd::uintmax_t privileged_only_space= si.free- si.available;        unused_space-= privileged_only_space;        capacity-= privileged_only_space;}conststd::uintmax_t used_space{capacity- unused_space};return100* used_space/ capacity;} void print_disk_space_info(autoconst& dirs,int width=14){(std::cout<<std::left).imbue(std::locale("en_US.UTF-8")); for(constauto s:{"Capacity","Free","Available","Use%","Dir"})std::cout<<"│ "<<std::setw(width)<< s<<' '; for(std::cout<<'\n';autoconst& dir: dirs){std::error_code ec;const std::filesystem::space_info si=std::filesystem::space(dir, ec);for(auto x:{si.capacity, si.free, si.available, disk_usage_percent(si)})std::cout<<"│ "<<std::setw(width)<<static_cast<std::intmax_t>(x)<<' ';std::cout<<"│ "<< dir<<'\n';}} int main(){constauto dirs={"/dev/null","/tmp","/home","/proc","/null"};    print_disk_space_info(dirs);}

      Possible output:

      │ Capacity       │ Free           │ Available      │ Use%           │ Dir            │ 84,417,331,200 │ 42,732,986,368 │ 40,156,028,928 │ 50             │ /dev/null│ 84,417,331,200 │ 42,732,986,368 │ 40,156,028,928 │ 50             │ /tmp│ -1             │ -1             │ -1             │ 100            │ /home│ 0              │ 0              │ 0              │ 100            │ /proc│ -1             │ -1             │ -1             │ 100            │ /null

      [edit]See also

      (C++17)
      determines available free space on the file system
      (function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/filesystem/space_info&oldid=158122"

      [8]ページ先頭

      ©2009-2025 Movatter.jp