名前空間
変種
操作

std::experimental::filesystem::canonical

From cppreference.com
< cpp‎ | experimental‎ | fs
 
 
 
 
ヘッダー <experimental/filesystem> で定義されています
path canonical( const path& p, const path& base = current_path() );
(1) (filesystem TS)
path canonical( const path& p, error_code& ec );
(2) (filesystem TS)
path canonical( const path& p, const path& base, error_code& ec );
(3) (filesystem TS)

p を、ドット、ドットドット要素、またはシンボリックリンクを持たない絶対パス(正規化された絶対パス)に変換します。

p が絶対パスでない場合、関数は absolute(p, base) または absolute(p) (2) によってまず絶対パスに変換されたかのように動作します。

p は存在しなければなりません。

目次

[編集] Parameters

p - 絶対パスまたは base からの相対パスであり、存在するパスでなければならないパス
base - p が相対パスの場合に使用されるベースパス
エラーコード - エラー状態を格納するためのエラーコード。

[編集] Return value

absolute(p, base) (または absolute(p) for (2))と同じファイルに解決される絶対パス。

[編集] Exceptions

error_code& パラメータを取らないオーバーロードは、基盤となる OS API エラーが発生した場合に filesystem_error をスローします。これは、p を最初の引数、base を 2 番目の引数、OS エラーコードをエラーコード引数として構築されます。std::bad_alloc は、メモリ割り当てに失敗した場合にスローされる可能性があります。error_code& を取るオーバーロードは、OS API の呼び出しが失敗した場合にそれを OS API エラーコードに設定し、エラーが発生しなかった場合は ec.clear() を実行します。このオーバーロードは
noexcept 指定:  
noexcept
  

この関数は、POSIX の realpath に基づいています。

[編集] Example

#include <experimental/filesystem>
#include <iostream>
namespace fs = std::experimental::filesystem;
 
int main()
{
    fs::path p = fs::path("..") / ".." / "AppData";
    std::cout << "Current path is " << fs::current_path() << '\n'
              << "Canonical path for " << p << " is " << fs::canonical(p) << '\n';
}

実行結果の例

Current path is "C:\Users\abcdef\AppData\Local\Temp"
Canonical path for "..\..\AppData" is "C:\Users\abcdef\AppData"

[編集] See also

パスを表現する
(クラス) [編集]
絶対パスを構成する
OS固有の動作を複製してパスを絶対パスに変換します
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)