Spec-Zone.ru › C++

std::filesystem::current_path

Определено в заголовочном файле <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 ОС; исключение создаётся с кодом ошибки ОС в качестве аргумента кода ошибки.
2) При сбое вызова API ОС записывает код ошибки ОС в параметр std::error_code&, а при отсутствии ошибок выполняет ec.clear().
3) Выбрасывает std::filesystem::filesystem_error при ошибках нижележащего API ОС; исключение создаётся с p в качестве первого аргумента пути и кодом ошибки ОС в качестве аргумента кода ошибки.
4) При сбое вызова API ОС записывает код ошибки ОС в параметр std::error_code&, а при отсутствии ошибок выполняет 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"

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/filesystem/current_path

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API