Namespaces
Variants

std::filesystem:: is_regular_file

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

Vérifie si le statut de fichier ou le chemin donné correspond à un fichier régulier.

1) Équivalent à s. type ( ) == file_type :: regular .
2,3) Équivalent à is_regular_file ( status ( p ) ) ou is_regular_file ( status ( p, ec ) ) respectivement.

Table des matières

Paramètres

s - statut du fichier à vérifier
p - chemin à examiner
ec - code d'erreur pour stocker le statut d'erreur

Valeur de retour

true si le fichier indiqué par p ou si le type indiqué par s correspond à un fichier régulier, false sinon. La surcharge non-lancante 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.

2,3) 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.

Notes

La surcharge de lancement est spécifiée en plus pour lancer std::filesystem::filesystem_error si status ( p ) devait lancer.

Exemple

#include <cstdio>
#include <cstring>
#include <filesystem>
#include <fstream>
#include <iostream>
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/un.h>
#include <unistd.h>
namespace fs = std::filesystem;
void demo_status(const fs::path& p, fs::file_status s)
{
    std::cout << p;
    // alternative: switch(s.type()) { case fs::file_type::regular: ...}
    if (fs::is_regular_file(s))
        std::cout << " is a regular file\n";
    if (fs::is_directory(s))
        std::cout << " is a directory\n";
    if (fs::is_block_file(s))
        std::cout << " is a block device\n";
    if (fs::is_character_file(s))
        std::cout << " is a character device\n";
    if (fs::is_fifo(s))
        std::cout << " is a named IPC pipe\n";
    if (fs::is_socket(s))
        std::cout << " is a named IPC socket\n";
    if (fs::is_symlink(s))
        std::cout << " is a symlink\n";
    if (!fs::exists(s))
        std::cout << " does not exist\n";
}
int main()
{
    // create files of different kinds
    fs::create_directory("sandbox");
    fs::create_directory("sandbox/dir");
    std::ofstream{"sandbox/file"}; // create regular file
    fs::create_symlink("file", "sandbox/symlink");
    mkfifo("sandbox/pipe", 0644);
    sockaddr_un addr;
    addr.sun_family = AF_UNIX;
    std::strcpy(addr.sun_path, "sandbox/sock");
    int fd = socket(PF_UNIX, SOCK_STREAM, 0);
    bind(fd, reinterpret_cast<sockaddr*>(&addr), sizeof addr);
    // demo different status accessors
    for (auto it{fs::directory_iterator("sandbox")}; it != fs::directory_iterator(); ++it)
        demo_status(*it, it->symlink_status()); // use cached status from directory entry
    demo_status("/dev/null", fs::status("/dev/null")); // direct calls to status
    demo_status("/dev/sda", fs::status("/dev/sda"));
    demo_status("sandbox/no", fs::status("/sandbox/no"));
    // cleanup (prefer std::unique_ptr-based custom deleters)
    close(fd);
    fs::remove_all("sandbox");
}

Sortie possible :

"sandbox/file" is a regular file
"sandbox/dir" is a directory
"sandbox/pipe" is a named IPC pipe
"sandbox/sock" is a named IPC socket
"sandbox/symlink" is a symlink
"/dev/null" is a character device
"/dev/sda" is a block device
"sandbox/no" does not exist

Voir aussi

(C++17)
le type d'un fichier
(enumération)
(C++17) (C++17)
détermine les attributs du fichier
détermine les attributs du fichier en vérifiant la cible du lien symbolique
(fonction)
représente le type de fichier et les permissions
(classe)
vérifie si le statut du fichier est connu
(fonction)
vérifie si le chemin donné fait référence à un périphérique bloc
(fonction)
vérifie si le chemin donné fait référence à un périphérique caractère
(fonction)
vérifie si le chemin donné fait référence à un répertoire
(fonction)
(C++17)
vérifie si le chemin donné fait référence à un tube nommé
(fonction)
(C++17)
vérifie si l'argument fait référence à un fichier autre
(fonction)
(C++17)
vérifie si l'argument fait référence à une socket IPC nommée
(fonction)
(C++17)
vérifie si l'argument fait référence à un lien symbolique
(fonction)
(C++17)
vérifie si le chemin fait référence à un objet du système de fichiers existant
(fonction)
vérifie si l'entrée de répertoire fait référence à un fichier régulier
(fonction membre publique de std::filesystem::directory_entry )