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.
Параметры
| p | - | путь для преобразования в абсолютный вид |
| ec | - | параметр-результат для отчета об ошибках в небросковом перегрузе |
Значение результата
Возвращает абсолютный (хотя и не обязательно канонический) имя пути, ссылающийся на тот же файл, что и p.
Исключения
Любой перегруз, не помеченный как noexcept может выбросить std::bad_alloc в случае сбоя выделения памяти.
std::filesystem::filesystem_error при ошибках в API операционной системы, созданный с p в качестве первого аргумента пути и кодом ошибки операционной системы в качестве аргумента ошибки.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"
См. также
|
(C++17) | формирует канонический путь (функция) |
|
(C++17) | формирует относительный путь (функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/filesystem/absolute