Namensräume
Varianten
Aktionen

std::filesystem::is_empty

Von cppreference.com
 
 
 
Definiert in Header <filesystem>
bool is_empty( const std::filesystem::path& p );
(1) (seit C++17)
bool is_empty( const std::filesystem::path& p, std::error_code& ec );
(2) (seit C++17)

Prüft, ob der angegebene Pfad eine leere Datei oder ein leeres Verzeichnis repräsentiert.

Inhalt

[edit] Parameter

p - Zu untersuchender Pfad
ec - Fehlercode, der im Fehlerfall modifiziert wird

[edit] Rückgabewert

true, wenn der durch p angegebene Pfad eine leere Datei oder ein leeres Verzeichnis repräsentiert, andernfalls false. Die overload-Funktion ohne Ausnahme gibt im Fehlerfall false zurück.

[edit] Ausnahmen

Jede Überladung, die nicht als noexcept markiert ist, kann std::bad_alloc auslösen, wenn die Speicherzuweisung fehlschlägt.

1) Wirft std::filesystem::filesystem_error bei zugrundeliegenden Betriebssystem-API-Fehlern, konstruiert mit p als erstem Pfadargument und dem Betriebssystem-Fehlercode als Fehlercodeargument.
2) Setzt einen std::error_code& Parameter auf den Betriebssystem-API-Fehlercode, wenn ein Betriebssystem-API-Aufruf fehlschlägt, und führt ec.clear() aus, wenn keine Fehler auftreten.

[edit] Beispiel

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

Mögliche Ausgabe

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

[edit] Fehlerberichte

Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 3013 C++17 error_code-Überladung als noexcept markiert, kann aber Speicher allokieren noexcept entfernt

[edit] Siehe auch

(C++17)(C++17)
ermittelt Dateiattribute
ermittelt Dateiattribute, wobei das Ziel des symbolischen Links geprüft wird
(Funktion) [bearbeiten]
(C++17)
prüft, ob ein Pfad auf ein existierendes Dateisystemobjekt verweist
(Funktion) [bearbeiten]