名前空間
変種
操作

std::filesystem::absolute

From 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 - 絶対形式に変換するパス
エラーコード - 例外を投げないオーバーロードでのエラー報告のための出力パラメータ

[編集] 戻り値

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

[編集] 例外

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

1) 基盤となるOS APIエラーが発生した場合、最初のパス引数としてp、エラーコード引数としてOSのエラーコードとともに構築されたstd::filesystem::filesystem_error を投げます。
2) OS API呼び出しが失敗した場合、std::error_code& パラメータにOS APIのエラーコードが設定されます。エラーが発生しなかった場合は、ec.clear() が実行されます。

[編集] 注意

pが存在しないことをエラーと見なさないことが実装に推奨されます。

POSIXベースのオペレーティングシステムでは、std::filesystem::absolute(p)は、pが空のパスである場合を除き、std::filesystem::current_path() / pと同等です。

Windowsでは、std::filesystem::absoluteGetFullPathNameWの呼び出しとして実装される場合があります。

[編集]

#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"

[編集] 関連項目

正規パスを構成する
(関数) [編集]
相対パスを構成する
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)