Namespaces
Variants

std::experimental::filesystem:: canonical

From cppreference.net
Определено в заголовочном файле <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 должен существовать.

Содержание

Параметры

p - путь, который может быть абсолютным или относительным к base , и который должен существовать
base - базовый путь, используемый в случае, если p является относительным
ec - код ошибки для сохранения статуса ошибки

Возвращаемое значение

Абсолютный путь, который разрешается в тот же файл, что и absolute ( p, base ) (или absolute ( p ) для (2) ).

Исключения

The overload that does not take an error_code & parameter throws filesystem_error on underlying OS API errors, constructed with p as the first argument, base as the second argument, and the OS error code as the error code argument. std:: bad_alloc may be thrown if memory allocation fails. The overload taking an error_code & parameter sets it to the OS API error code if an OS API call fails, and executes ec. clear ( ) if no errors occur. This overload has
noexcept спецификация:
noexcept

Эта функция создана по образцу POSIX-функции realpath .

Пример

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

Смотрите также

представляет путь
(класс)
формирует абсолютный путь
преобразует путь в абсолютный путь, повторяя поведение, специфичное для ОС
(функция)