- filesystem[meta header]
- std::filesystem[meta namespace]
- class[meta id-type]
- cpp17[meta cpp]
namespace std::filesystem {
struct space_info;
}
std::filesystem::space_info
は、ディスク容量を表すクラスである。
available
の値はOS依存であるが、値としてはfree
以下となるだろう。POSIX環境では、非特権プロセスが使用できる容量を表す。
名前 | 説明 | 対応バージョン |
---|---|---|
friend bool operator==(const space_info&, const space_info&) = default; |
等値比較 | C++20 |
friend bool operator!=(const space_info&, const space_info&); |
非等値比較 (== により使用可能) |
C++20 |
名前 | 説明 | 対応バージョン |
---|---|---|
uintmax_t capacity |
全体の容量 (単位はバイト) | C++17 |
uintmax_t free; |
空き容量 (単位はバイト) | C++17 |
uintmax_t available; |
使用できる容量 (単位はバイト) | C++17 |
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
void print_space(const char* name, std::uintmax_t bytes)
{
std::uintmax_t mega_bytes = bytes / (1024 * 1024);
std::cout << name << " : " << bytes << "[B]"
<< " (" << mega_bytes << "[MB])" << std::endl;
}
int main()
{
fs::path p = "/";
fs::space_info info = fs::space(p);
std::cout << p << std::endl;
print_space("capacity", info.capacity);
print_space("free", info.free);
print_space("available", info.available);
}
- fs::space_info[color ff0000]
- fs::space[link space.md]
- std::uintmax_t[link /reference/cstdint/uintmax_t.md]
"/"
capacity : 1048580096[B] (1000[MB])
free : 1048580096[B] (1000[MB])
available : 1048580096[B] (1000[MB])
仮想環境で実行しているため、空き容量が減っていない。実環境で動かせるようになったら出力例を更新する。
- C++17
- Clang: 7.0 [mark verified]
- GCC: 8.1 [mark verified]
- Visual C++:
- P1614R2 The Mothership has Landed
- C++20での三方比較演算子の追加と、関連する演算子の自動導出