Spec-Zone.ru › C++

std::filesystem::absolute

Определён в заголовочном файле <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) Выбрасывает std::filesystem::filesystem_error при ошибках базового API ОС; исключение создаётся с p в качестве первого аргумента пути и кодом ошибки ОС в качестве аргумента кода ошибки.
2) Устанавливает для параметра std::error_code& код ошибки API ОС, если вызов 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"

См. также

canonicalweakly_canonical
(C++17)
составляет канонический путь
(функция)
relativeproximate
(C++17)
составляет относительный путь
(функция)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/filesystem/absolute

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API