Spec-Zone.ru › C++

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 удалено

См. также

statussymlink_status
(C++17)(C++17)
определяет атрибуты файла
определяет атрибуты файла, проверяя целевой символ символической ссылки
(функция)
exists
(C++17)
проверяет, ссылается ли путь на существующий объект файловой системы
(функция)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/filesystem/is_empty

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API