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 |
例
Linux環境の例
#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);
}
出力例
"/"
capacity : 1048580096[B] (1000[MB])
free : 1048580096[B] (1000[MB])
available : 1048580096[B] (1000[MB])
仮想環境で実行しているため、空き容量が減っていない。実環境で動かせるようになったら出力例を更新する。
バージョン
言語
- C++17
処理系
- Clang: 7.0 ✅
- GCC: 8.1 ✅
- Visual C++:
参照
- P1614R2 The Mothership has Landed
- C++20での三方比較演算子の追加と、関連する演算子の自動導出