std::filesystem::relative, std::filesystem::proximate
Defined in header <filesystem> |
||
|---|---|---|
path relative( const std::filesystem::path& p,
std::error_code& ec );
|
(1) | (since C++17) |
path relative( const std::filesystem::path& p,
const std::filesystem::path& base = std::filesystem::current_path() );
|
(2) | (since C++17) |
path relative( const std::filesystem::path& p,
const std::filesystem::path& base,
std::error_code& ec );
|
(3) | (since C++17) |
path proximate( const std::filesystem::path& p,
std::error_code& ec );
|
(4) | (since C++17) |
path proximate( const std::filesystem::path& p,
const std::filesystem::path& base = std::filesystem::current_path() );
|
(5) | (since C++17) |
path proximate( const std::filesystem::path& p,
const std::filesystem::path& base,
std::error_code& ec );
|
(6) | (since C++17) |
1) Возвращает
relative(p, current_path(), ec).
2,3) Возвращает
p, относящуюся к base. Разрешает символические ссылки и приводит в нормальную форму как p, так и base перед дальнейшей обработкой. Эффективно возвращает std::filesystem::weakly_canonical(p).lexically_relative(std::filesystem::weakly_canonical(base)) или std::filesystem::weakly_canonical(p, ec).lexically_relative(std::filesystem::weakly_canonical(base, ec)), за исключением формы с кодом ошибки, которая возвращает path() при первой ошибке, если таковая имеется.
4) Возвращает
proximate(p, current_path(), ec).
5,6) Эффективно возвращает
std::filesystem::weakly_canonical(p).lexically_proximate(std::filesystem::weakly_canonical(base)) или std::filesystem::weakly_canonical(p, ec).lexically_proximate(std::filesystem::weakly_canonical(base, ec)), за исключением формы с кодом ошибки, которая возвращает path() при первой ошибке, если таковая имеется.Параметры
| p | - | существующий путь |
| base | - | базовый путь, относительно которого p будет сделана относительной/ближайшей |
| ec | - | код ошибки для хранения состояния ошибки |
Возвращаемое значение
1)
p относительно current_path().
2,3)
p относительно base.
4)
p близка к current_path().
5,6)
p близка к base.Исключения
Любой перегруз, не помеченный noexcept, может вызвать std::bad_alloc, если выделение памяти не удалось.
2,5) Выбрасывает
std::filesystem::filesystem_error при ошибках в базовой API ОС, созданной с p в качестве первого аргумента пути, base в качестве второго аргумента пути и кодом ошибки ОС в качестве аргумента ошибки.
1,3,4,6) Устанавливает параметр
std::error_code& в код ошибки API ОС, если вызов API ОС завершился ошибкой, и выполняет ec.clear(), если ошибок не возникло.Пример
#include <filesystem>
#include <iostream>
void show(std::filesystem::path x, std::filesystem::path y)
{
std::cout << "x:\t\t " << x << "\ny:\t\t " << y << '\n'
<< "relative(x, y): "
<< std::filesystem::relative(x, y) << '\n'
<< "proximate(x, y): "
<< std::filesystem::proximate(x, y) << "\n\n";
}
int main()
{
show("/a/b/c", "/a/b");
show("/a/c", "/a/b");
show("c", "/a/b");
show("/a/b", "c");
}Возможный вывод:
x: "/a/b/c" y: "/a/b" relative(x, y): "c" proximate(x, y): "c" x: "/a/c" y: "/a/b" relative(x, y): "../c" proximate(x, y): "../c" x: "c" y: "/a/b" relative(x, y): "" proximate(x, y): "c" x: "/a/b" y: "c" relative(x, y): "" proximate(x, y): "/a/b"
См. также
|
(C++17) |
представляет путь (класс) |
|
(C++17) |
составляется абсолютный путь (функция) |
|
(C++17) |
составляется канонический путь (функция) |
| преобразует путь в нормальную форму преобразует путь в относительную форму преобразует путь в близкую форму (публичный член-функция std::filesystem::path) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/filesystem/relative