std::filesystem::is_empty
Определено в заголовке <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 | - | код ошибки для изменения в случае ошибки |
Значение результата
Возвращает true , если путь, указанный в p, ссылается на пустой файл или директорию, false в противном случае. Небросковый перегруз возвращает false , если произошла ошибка.
Исключение
Любой перегруз, не помеченный noexcept, может выбросить std::bad_alloc , если выделение памяти не удалось.
1) Выбрасывает
std::filesystem::filesystem_error при ошибках в базовых API операционной системы, сконструированных с p в качестве первого аргумента пути и кодом ошибки ОС в качестве аргумента кода ошибки.
2) Устанавливает параметр
std::error_code& в код ошибки API операционной системы, если вызов API операционной системы завершился ошибкой, и выполняет ec.clear() , если ошибок не произошло.Пример
#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);
}Возможный вывод:
Temp dir: "/tmp" is_empty(): false Temp file: "/tmp/fileCqd9DM" is_empty(): true is_empty(): false file_size(): 16
Отчеты об ошибках
Следующие отчеты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применён к | Поведение, как опубликовано | Корректное поведение |
|---|---|---|---|
| LWG 3013 | C++17 |
error_code перегрузка отмечена noexcept, но может выделять память | noexcept удалено |
См. также
|
(C++17)(C++17) | определяет атрибуты файла определяет атрибуты файла, проверяя целевой символ символической ссылки (функция) |
|
(C++17) | проверяет, ссылается ли путь на существующий объект файловой системы (функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/filesystem/is_empty