Defined in header <filesystem> | ||
bool is_empty(conststd::filesystem::path& p); | (1) | (since C++17) |
bool is_empty(conststd::filesystem::path& p,std::error_code& ec); | (2) | (since C++17) |
Checks whether the given path refers to an empty file or directory.
Contents |
| p | - | path to examine |
| ec | - | error code to modify in case of error |
true if the path indicated byp refers to an empty file or directory,false otherwise. The non-throwing overload returnsfalse if an error occurs.
Any overload not markednoexcept may throwstd::bad_alloc if memory allocation fails.
#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.com"; 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);}
Possible output:
Temp dir: "/tmp"is_empty(): falseTemp file: "/tmp/fileCqd9DM"is_empty(): trueis_empty(): falsefile_size(): 16
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3013 | C++17 | error_code overload marked noexcept but can allocate memory | noexcept removed |
(C++17)(C++17) | determines file attributes determines file attributes, checking the symlink target (function)[edit] |
(C++17) | checks whether path refers to existing file system object (function)[edit] |