std::filesystem:: is_empty
From cppreference.net
<
cpp
|
filesystem
|
定义于头文件
<filesystem>
|
||
|
bool
is_empty
(
const
std::
filesystem
::
path
&
p
)
;
|
(1) | (C++17 起) |
|
bool
is_empty
(
const
std::
filesystem
::
path
&
p,
std::
error_code
&
ec
)
;
|
(2) | (C++17 起) |
检查给定路径是否指向空文件或目录。
目录 |
参数
| p | - | 要检查的路径 |
| ec | - | 发生错误时需修改的错误代码 |
返回值
若 p 指示的路径指向空文件或目录则为 true ,否则为 false 。非抛出重载在出现错误时返回 false 。
异常
任何未标记为
noexcept
的重载在内存分配失败时都可能抛出
std::bad_alloc
。
示例
运行此代码
#include <cstdio> #include <filesystem> #include <fstream> #include <iostream> int main() { namespace fs = std::filesystem; const fs::path tmp_dir{fs::temp_directory_path()}; std::cout << std::boolalpha << "Temp dir: " << tmp_dir << '\n' << "is_empty(): " << fs::is_empty(tmp_dir) << '\n'; const fs::path tmp_name{tmp_dir / std::tmpnam(nullptr)}; std::cout << "Temp file: " << tmp_name << '\n'; std::ofstream file{tmp_name.string()}; std::cout << "is_empty(): " << fs::is_empty(tmp_name) << '\n'; file << "cppreference.net"; file.flush(); std::cout << "is_empty(): " << fs::is_empty(tmp_name) << '\n' << "file_size(): " << fs::file_size(tmp_name) << '\n'; file.close(); fs::remove(tmp_name); }
可能的输出:
Temp dir: "/tmp" is_empty(): false Temp file: "/tmp/fileCqd9DM" is_empty(): true is_empty(): false file_size(): 16
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
| 缺陷报告 | 适用范围 | 发布时行为 | 正确行为 |
|---|---|---|---|
| LWG 3013 | C++17 |
error_code
重载标记为 noexcept 但可能分配内存
|
移除 noexcept |
参见
|
(C++17)
(C++17)
|
确定文件属性
确定文件属性,检查符号链接目标 (函数) |
|
(C++17)
|
检查路径是否指向存在的文件系统对象
(函数) |