Namespaces
Variants

std::filesystem:: absolute

From ja.cppreference.net
ヘッダーで定義 <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) この例外を送出しないオーバーロードは、エラーが発生した場合にデフォルト構築されたpathを返します。

目次

パラメータ

p - 絶対形式に変換するパス
ec - 例外を投げないオーバーロードでのエラー報告用出力パラメータ

戻り値

p が参照する同じファイルを参照する絶対(必ずしも正規化されているとは限らない)パス名を返します。

例外

noexceptでマークされていないオーバーロードは、 メモリ確保に失敗した場合に std::bad_alloc をスローする可能性があります。

1) 基盤OS APIエラーが発生した場合 std::filesystem::filesystem_error をスローします。この例外は p を第一パス引数、OSエラーコードをエラーコード引数として構築されます。
2) OS API呼び出しが失敗した場合、 std:: error_code & パラメータにOS 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"

関連項目

正規パスを構成する
(関数)
相対パスを構成する
(関数)