名稱空間
變體
操作

std::filesystem::absolute

來自 cppreference.com
 
 
 
定義於標頭檔案 <filesystem>
path absolute( const std::filesystem::path& p );
(1) (C++17 起)
path absolute( const std::filesystem::path& p, std::error_code& ec );
(2) (C++17 起)

返回一個路徑,該路徑指向與 p 相同的的檔案系統位置,並且 filesystem::path::is_absolute()true

2) 如果發生錯誤,此不丟擲異常的過載返回預設構造的路徑。

目錄

[編輯] 引數

p - 要轉換為絕對形式的路徑
ec - 非丟擲過載中用於錯誤報告的出參

[編輯] 返回值

返回一個絕對(但不一定是規範的)路徑名,該路徑名指向與 p 相同的檔案。

[編輯] 異常

任何未標記為 noexcept 的過載都可能在記憶體分配失敗時丟擲 std::bad_alloc

1) 在底層作業系統 API 錯誤時丟擲 std::filesystem::filesystem_error,構造時 p 作為第一個路徑引數,作業系統錯誤碼作為錯誤碼引數。
2) 如果作業系統 API 呼叫失敗,則將 std::error_code& 引數設定為作業系統 API 錯誤碼;如果沒有發生錯誤,則執行 ec.clear()

[編輯] 注意

鼓勵實現不要將 p 不存在視為錯誤。

對於基於 POSIX 的作業系統,std::filesystem::absolute(p) 等價於 std::filesystem::current_path() / p,除了當 p 是空路徑時。

對於 Windows,std::filesystem::absolute 可能被實現為對 GetFullPathNameW 的呼叫。

[編輯] 示例

#include <filesystem>
#include <iostream>
namespace fs = std::filesystem;
 
int main()
{
    std::filesystem::path p = "foo.c";
    std::cout << "Current path is " << std::filesystem::current_path() << '\n';
    std::cout << "Absolute path for " << p << " is " << fs::absolute(p) << '\n';
}

可能的輸出

Current path is "/tmp/1666297965.0051296"
Absolute path for "foo.c" is "/tmp/1666297965.0051296/foo.c"

[編輯] 參閱

組成一個規範路徑
(函式) [編輯]
組成一個相對路徑
(函式) [編輯]