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) Устанавливает параметр 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"

См. также

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

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

Spec-Zone.ru

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