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/cpp/filesystem/absolute