Namespaces
Variants

std::filesystem::directory_entry:: is_regular_file

From cppreference.net
bool is_regular_file ( ) const ;
(1) (desde C++17)
bool is_regular_file ( std:: error_code & ec ) const noexcept ;
(2) (desde C++17)

Comprueba si el objeto apuntado es un archivo regular. Efectivamente retorna:

Contenidos

Parámetros

ec - parámetro de salida para reporte de errores en la sobrecarga que no lanza excepciones

Valor de retorno

true si el objeto del sistema de archivos referenciado es un archivo regular, false en caso contrario.

Excepciones

Cualquier sobrecarga no marcada como noexcept puede lanzar std::bad_alloc si la asignación de memoria falla.

1) Lanza std::filesystem::filesystem_error en errores de la API del sistema operativo subyacente, construido con p como primer argumento de ruta y el código de error del sistema operativo como argumento de código de error.
2) Establece un parámetro std:: error_code & al código de error de la API del sistema operativo si una llamada a la API del SO falla, y ejecuta ec. clear ( ) si no ocurren errores.

Ejemplo

#include <filesystem>
#include <iostream>
#include <string>
namespace fs = std::filesystem;
int main(int argc, const char* argv[])
{
    // Imprimir todos los archivos regulares en un directorio 'dir'.
    try
    {
        const auto dir{argc == 2 ? fs::path{argv[1]} : fs::current_path()};
        std::cout << "Directorio actual: " << dir << '\n'
                  << std::string(40, '-') << '\n';
        for (fs::directory_entry const& entry : fs::directory_iterator(dir))
            if (entry.is_regular_file())
                std::cout << entry.path().filename() << '\n';
    }
    catch(const fs::filesystem_error& e)
    {
        std::cout << e.what() << '\n';
    }
}

Salida posible:

Directorio actual: "/tmp/1588616534.9884143"
----------------------------------------
"main.cpp"
"a.out"

Véase también

comprueba si el argumento se refiere a un archivo regular
(función)