命名空间
变体
操作

std::filesystem::current_path

来自 cppreference.com
 
 
 
定义在头文件 <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) 在底层操作系统 API 错误上抛出 std::filesystem::filesystem_error,使用操作系统错误代码作为错误代码参数构造。
2) 如果操作系统 API 调用失败,则将 std::error_code& 参数设置为操作系统 API 错误代码,如果未发生错误,则执行 ec.clear()
3) 在底层操作系统 API 错误上抛出 std::filesystem::filesystem_error,使用 p 作为第一个路径参数,使用操作系统错误代码作为错误代码参数构造。
4) 如果操作系统 API 调用失败,则将 std::error_code& 参数设置为操作系统 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"

[编辑] 另请参见

返回适合于临时文件的目录
(函数) [编辑]