Namespaces
Variants

std::experimental::filesystem:: create_directory, std::experimental::filesystem:: create_directories

From cppreference.net
Definido en el encabezado <experimental/filesystem>
bool create_directory ( const path & p ) ;
bool create_directory ( const path & p, error_code & ec ) ;
(1) (filesystem TS)
bool create_directory ( const path & p, const path & existing_p ) ;
bool create_directory ( const path & p, const path & existing_p, error_code & ec ) ;
(2) (filesystem TS)
bool create_directories ( const path & p ) ;
bool create_directories ( const path & p, error_code & ec ) ;
(3) (filesystem TS)
1) Crea el directorio p como si fuera mediante mkdir() de POSIX con un segundo argumento de static_cast < int > ( fs :: perms :: all ) (el directorio padre debe existir previamente). Si p ya existe y es un directorio, la función no hace nada (esta condición no se trata como un error).
2) Igual que (1) , excepto que los atributos del nuevo directorio se copian desde existing_p (que debe ser un directorio existente). Depende del sistema operativo qué atributos se copian: en sistemas POSIX, los atributos se copian como si fuera mediante
stat(existing_p.c_str(), &attributes_stat)
mkdir(p.c_str(), attributes_stat.st_mode)
En Windows OS, los atributos se copian como si fuera mediante
CreateDirectoryExW(existing_p.c_str(), p.c_str(), 0)
3) Ejecuta (1) para cada elemento de p que aún no existe.

Las sobrecargas que no lanzan excepciones retornan false si ocurre cualquier error.

Contenidos

Parámetros

p - la ruta al nuevo directorio a crear
existing_p - la ruta a un directorio del cual copiar los atributos
ec - parámetro de salida para reporte de errores en la sobrecarga que no lanza excepciones

Valor de retorno

1,2) true si la creación del directorio es exitosa, false en caso contrario.

Excepciones

1,3) La sobrecarga que no toma un parámetro error_code & lanza filesystem_error en errores de API del sistema operativo subyacente, construido con p como primer argumento y el código de error del SO como argumento de código de error. std:: bad_alloc puede ser lanzado si falla la asignación de memoria. La sobrecarga que toma un parámetro error_code & lo establece al código de error de la API del SO si una llamada a la API del SO falla, y ejecuta ec. clear ( ) si no ocurren errores. Esta sobrecarga tiene
noexcept especificación:
noexcept
2) La sobrecarga que no toma un parámetro error_code & lanza filesystem_error en errores de API del sistema operativo subyacente, construido con p como primer argumento, existing_p como segundo argumento, y el código de error del sistema operativo como argumento de código de error. std:: bad_alloc puede ser lanzado si falla la asignación de memoria. La sobrecarga que toma un parámetro error_code & lo establece al código de error de la API del sistema operativo si una llamada a la API del sistema operativo falla, y ejecuta ec. clear ( ) si no ocurren errores. Esta sobrecarga tiene
noexcept especificación:
noexcept

Notas

La sobrecarga que preserva atributos (2) es invocada implícitamente por copy() cuando se copian directorios recursivamente. Su equivalente en boost.filesystem es copy_directory (con el orden de argumentos invertido).

Ejemplo

#include <cstdlib>
#include <experimental/filesystem>
#include <fstream>
#include <iostream>
namespace fs = std::experimental::filesystem;
int main()
{
    fs::create_directories("sandbox/1/2/a");
    fs::create_directory("sandbox/1/2/b");
    fs::permissions("sandbox/1/2/b", fs::perms::remove_perms | fs::perms::others_all);
    fs::create_directory("sandbox/1/2/c", "sandbox/1/2/b");
    std::system("ls -l sandbox/1/2");
    fs::remove_all("sandbox");
}

Salida posible:

drwxr-xr-x 2 user group 4096 Apr 15 09:33 a
drwxr-x--- 2 user group 4096 Apr 15 09:33 b
drwxr-x--- 2 user group 4096 Apr 15 09:33 c

Véase también

crea un enlace simbólico
(función)
copia archivos o directorios
(función)
identifica permisos del sistema de archivos
(enumeración)