Namespaces
Variants

std::filesystem:: current_path

From cppreference.net
Definido en el encabezado <filesystem>
path current_path ( ) ;
(1) (desde C++17)
path current_path ( std:: error_code & ec ) ;
(2) (desde C++17)
void current_path ( const std:: filesystem :: path & p ) ;
(3) (desde C++17)
void current_path ( const std:: filesystem :: path & p,
std:: error_code & ec ) noexcept ;
(4) (desde C++17)

Devuelve o cambia la ruta actual.

1,2) Devuelve la ruta absoluta del directorio de trabajo actual, obtenida como si (en formato nativo) por POSIX getcwd . (2) devuelve path ( ) si ocurre un error.
3,4) Cambia el directorio de trabajo actual a p , como si fuera mediante POSIX chdir .

Contenidos

Parámetros

p - ruta a la que cambiar el directorio de trabajo actual
ec - parámetro de salida para reporte de errores en las sobrecargas que no lanzan excepciones

Valor de retorno

1,2) Devuelve el directorio de trabajo actual.
3,4) (ninguno)

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 el código de error del sistema operativo como argumento del 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 sistema operativo falla, y ejecuta ec. clear ( ) si no ocurren errores.
3) 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.
4) 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.

Notas

El directorio de trabajo actual es el directorio, asociado con el proceso, que se utiliza como ubicación inicial en la resolución de nombres de ruta para rutas relativas.

La ruta actual devuelta por muchos sistemas operativos es una variable global peligrosa. Puede ser cambiada inesperadamente por funciones de bibliotecas de terceros o del sistema, o por otro hilo.

Ejemplo

#include <filesystem>
#include <iostream>
namespace fs = std::filesystem;
int main()
{
    std::cout << "Current path is " << fs::current_path() << '\n'; // (1)
    fs::current_path(fs::temp_directory_path()); // (3)
    std::cout << "Current path is " << fs::current_path() << '\n';
}

Salida posible:

Current path is "D:/local/ConsoleApplication1"
Current path is "E:/Temp"

Véase también

devuelve un directorio adecuado para archivos temporales
(función)