Namespaces
Variants

std::filesystem:: current_path

From ru.cppreference.net
Определено в заголовке <filesystem>
path current_path ( ) ;
(1) (начиная с C++17)
path current_path ( std:: error_code & ec ) ;
(2) (начиная с C++17)
void current_path ( const std:: filesystem :: path & p ) ;
(3) (начиная с C++17)
void current_path ( const std:: filesystem :: path & p,
std:: error_code & ec ) noexcept ;
(4) (начиная с C++17)

Возвращает или изменяет текущий путь.

1,2) Возвращает абсолютный путь текущей рабочей директории, полученный как если бы (в нативном формате) с помощью POSIX getcwd . (2) возвращает path ( ) при возникновении ошибки.
3,4) Изменяет текущую рабочую директорию на p , как при использовании POSIX chdir .

Содержание

Параметры

p - путь для изменения текущей рабочей директории
ec - выходной параметр для сообщения об ошибках в непорождающих исключения перегрузках

Возвращаемое значение

1,2) Возвращает текущую рабочую директорию.
3,4) (нет)

Исключения

Любая перегрузка, не помеченная noexcept , может выбрасывать std::bad_alloc при неудачном выделении памяти.

1) Выбрасывает std::filesystem::filesystem_error при ошибках в базовом API операционной системы, создавая исключение с кодом ошибки ОС в качестве аргумента error code.
2) Устанавливает параметр std:: error_code & в код ошибки API ОС при сбое вызова API ОС и выполняет ec. clear ( ) при отсутствии ошибок.
3) Выбрасывает std::filesystem::filesystem_error при ошибках в базовом API операционной системы, создаваемый с p в качестве первого аргумента пути и кодом ошибки ОС в качестве аргумента кода ошибки.
4) Устанавливает параметр std:: error_code & в код ошибки API ОС при сбое вызова API ОС и выполняет ec. clear ( ) при отсутствии ошибок.

Примечания

Текущий рабочий каталог — это каталог, связанный с процессом, который используется в качестве начальной точки при разрешении относительных путей.

Текущий путь, возвращаемый многими операционными системами, является опасной глобальной переменной. Он может быть неожиданно изменен функциями сторонних или системных библиотек, либо другим потоком.

Пример

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

Возможный вывод:

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

Смотрите также

возвращает каталог, подходящий для временных файлов
(функция)