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() при возникновении ошибки.Параметры
| 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"
См. также
|
(C++17) | возвращает каталог, подходящий для временных файлов (функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/filesystem/current_path