Namespaces
Variants

std::filesystem:: is_empty

From cppreference.net
Défini dans l'en-tête <filesystem>
bool is_empty ( const std:: filesystem :: path & p ) ;
(1) (depuis C++17)
bool is_empty ( const std:: filesystem :: path & p, std:: error_code & ec ) ;
(2) (depuis C++17)

Vérifie si le chemin donné fait référence à un fichier ou répertoire vide.

Table des matières

Paramètres

p - chemin à examiner
ec - code d'erreur à modifier en cas d'erreur

Valeur de retour

true si le chemin indiqué par p fait référence à un fichier ou répertoire vide, false sinon. La surcharge non levante retourne false si une erreur survient.

Exceptions

Toute surcharge non marquée noexcept peut lever std::bad_alloc si l'allocation de mémoire échoue.

1) Lance std::filesystem::filesystem_error en cas d'erreurs de l'API système sous-jacente, construit avec p comme premier argument de chemin et le code d'erreur du système comme argument de code d'erreur.
2) Définit un paramètre std:: error_code & au code d'erreur de l'API du système d'exploitation si un appel d'API système échoue, et exécute ec. clear ( ) si aucune erreur ne survient.

Exemple

#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);
}

Sortie possible :

Temp dir: "/tmp"
is_empty(): false
Temp file: "/tmp/fileCqd9DM"
is_empty(): true
is_empty(): false
file_size(): 16

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement publié Comportement corrigé
LWG 3013 C++17 error_code surcharge marquée noexcept mais peut allouer de la mémoire noexcept supprimé

Voir aussi

(C++17) (C++17)
détermine les attributs de fichier
détermine les attributs de fichier en vérifiant la cible du lien symbolique
(fonction)
(C++17)
vérifie si le chemin fait référence à un objet de système de fichiers existant
(fonction)