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 );
(4) (C++17 起)

返回或更改当前路径。

1-2) 返回当前工作目录的绝对路径,如同通过 POSIX getcwd 取得(以原生格式)。若错误发生则 (2) 返回 path()
3-4) 更改当前工作目录到 p ,如同通过 POSIX chdir

目录

参数

p - 更改当前工作目录所到的路径
ec - 不抛出重载中报告错误的输出参数

返回值

1-2) 返回当前工作目录。
3-4) (无)

异常

1-2) 不接受 std::error_code& 参数的重载在底层 OS API 错误时抛出 filesystem_error ,以作为错误码参数的 OS 错误码构造。若内存分配失败则可能抛出 std::bad_alloc 。若 OS API 调用失败,则接受 std::error_code& 参数的重载设置该参数为 OS API 错误码,而若不出现错误则执行 ec.clear()
3-4) 不接受 std::error_code& 参数的重载在底层 OS API 错误时抛出 filesystem_error ,以第一参数 p 和作为错误码参数的 OS 错误码构造。若内存分配失败则可能抛出 std::bad_alloc 。若 OS API 调用失败,则接受 std::error_code& 参数的重载设置该参数为 OS API 错误码,而若不出现错误则执行 ec.clear()

注意

当前工作目录是用作相对路径的路径解析中起始位置的目录。单个当前工作目录关联于整个进程。

当前工作目录是危险的程序全局状态。许多文件输入/输出所关联的函数的行为受当前路径的值影响。当前路径可能被程序的任何组件不期待地更改,包括各种外部库或其他线程。

示例

#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
    std::cout << "Current path is " << fs::current_path() << '\n';
}

可能的输出:

Current path is "D:/local/ConsoleApplication1"

版本历史

  • (当前 | 先前) 2017年5月1日 (一) 08:37Fruderica讨论 | 贡献. . (1,831字节) (+1,831). . (以“{{cpp/filesystem/title|current_path}} {{cpp/filesystem/navbar}} {{dcl begin}} {{dcl header | filesystem}} {{dcl | num=1 | since=c++17 | 1= path current_path(); }} {{...”为内容创建页面)