# std::filesystem::absolute

< cpp‎ | filesystem

定义于头文件 `<filesystem>` |  |
path absolute(const std::filesystem::path& p); path absolute(const std::filesystem::path& p, std::error_code& ec); | (1) | (C++17 起)

返回与 p 引用同一文件系统位置的路径，满足 `is_absolute()` 为 true 。不抛出重载在错误时返回默认构造的路径。

### 参数

p | - | 要转换成绝对形式的路径
ec | - | 不抛出重载中报告错误的输出参数

### 返回值

返回与 `p` 引用同一文件的绝对（尽管不必规范）路径名

### 异常

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

### 注意

鼓励实现认为 `p` 不存在不是错误。

对于基于 POSIX 的操作系统， std::filesystem::absolute(p) 等价于 std::filesystem::current_path() / p

对于 Windows ， `absolute` 可以实现为对 GetFullPathNameW 的调用。

### 示例

    #include <iostream>
    #include <filesystem>
    namespace fs = std::filesystem;
    int main()
    {
        fs::path p = "C:cl.exe";
        std::cout << "Current path is " << fs::current_path() << '\n'
                  << "Absolute path for " << p << " is " << fs::absolute(p) << '\n';
    // 实际位置： "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\cl.exe"
    }

可能的输出：

    Current path is "D:/local/ConsoleApplication1"
    Absolute path for "C:cl.exe" is "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\cl.exe"

### 参阅

canonical weakly_canonical (C++17) | 组成一个规范路径 (函数)
relative proximate (C++17) | 组成一个相对路径 (函数)