std::filesystem::relative, std::filesystem::proximate
De cppreference.com
< cpp | filesystem
<tbody>
</tbody>
| Definido en el archivo de encabezado <filesystem>
|
||
path relative( const std::filesystem::path& p, std::error_code& ec ); |
(1) | (desde C++17) |
path relative( const std::filesystem::path& p, const std::filesystem::path& base = std::filesystem::current_path()); path relative( const std::filesystem::path& p, const std::filesystem::path& base, std::error_code& ec ); |
(2) | (desde C++17) |
path proximate( const std::filesystem::path& p, std::error_code& ec ); |
(3) | (desde C++17) |
path proximate( const std::filesystem::path& p, const std::filesystem::path& base = std::filesystem::current_path()); path proximate( const std::filesystem::path& p, const std::filesystem::path& base, std::error_code& ec ); |
(4) | (desde C++17) |
1) Devuelve
relative(p, current_path(), ec).2) Devuelve
p hecha relativa a base. Resuelve los enlaces simbólicos y normaliza tanto p como base antes de otro procesamiento. Efectivamente devuelve weakly_canonical(p).lexically_relative(weakly_canonical(base)) o weakly_canonical(p, ec).lexically_relative(weakly_canonical(base, ec)), excepto que la forma de código de eror devuelve path() a la primera ocurrencia de un error, si los hay.3) Devuelve
proximate(p, current_path(), ec)4) Efectivamente devuelve
weakly_canonical(p).lexically_proximate(weakly_canonical(base)) o weakly_canonical(p, ec).lexically_proximate(weakly_canonical(base, ec)), excepto que la forma de código de eror devuelve path() a la primera ocurrencia de un error, si los hay.Parámetros
| p | - | Una ruta de acceso existente. |
| base | - | La ruta de acceso base, frente a la que p se hará relativa o aproximada. |
| ec | - | El código de error en el que almacenar el estado de error. |
Valor de retorno
1) p hecha relativa frente a base.
2) p hecha aproximada frente a base.
Excepciones
La sobrecarga que no toma un parámetro std::error_code& lanza filesystem::filesystem_error en los errores de la API del sistema operativo subyacente, construido con p como el primer argumento de la ruta de acceso, base como el segundo argumento de la ruta de acceso, y el código de error del sistema operativo como el argumento del código de error. La sobrecarga que toma un parámetro std::error_code& lo establece en el código de error de la API del sistema operativo si una llamada a la API del sistema operativo falla, y ejecuta ec.clear() si no ocurren errores. Cualquier sobrecarga que no está marcada con noexcept puede lanzar std::bad_alloc si la asignación de memoria falla.
Ejemplo
Ejecuta este código
#include <iostream>
#include <filesystem>
void mostrar(std::filesystem::path a, std::filesystem::path b)
{
std::cout << "relative(" << a << "," << b << ") == ";
std::cout << std::filesystem::relative(a,b) << "\n";
std::cout << "proximate(" << a << "," << b << ") == ";
std::cout << std::filesystem::proximate(a,b) << "\n";
}
int main()
{
mostrar("/a/b/c","/a/b");
mostrar("/a/c","/a/b");
mostrar("c","/a/b");
mostrar("/a/b","c");
}
Posible salida:
relative("/a/b/c","/a/b") == "c"
proximate("/a/b/c","/a/b") == "c"
relative("/a/c","/a/b") == "../c"
proximate("/a/c","/a/b") == "../c"
relative("c","/a/b") == ""
proximate("c","/a/b") == "c"
relative("/a/b","c") == ""
proximate("/a/b","c") == "/a/b"
Véase también
(C++17) |
Representa una ruta de acceso. (clase) |
(C++17) |
Compone una ruta de acceso absoluta. (función) |
(C++17) |
Compone una ruta de acceso canónica. (función) |