std::filesystem::absolute
Definido en el archivo de encabezado <filesystem> | ||
path absolute(conststd::filesystem::path& p); path absolute(conststd::filesystem::path& p, std::error_code& ec); | (desde C++17) | |
Devuelve una ruta de acceso que hace referencia a la misma ubicación del sistema de archivos que p, para la que filesystem::is_absolute() es true. La sobrecarga que no lanza excepciones devuelve la ruta construida por defecto si ocurre un error.
Contenido |
[editar]Parámetros
p | - | La ruta de acceso a convertir a una forma absoluta. |
ec | - | El parámetro de salida para informe de errores en la sobrecarga que no lanza excepciones. |
[editar]Valor de retorno
Devuelve un nombre de ruta de acceso absoluta (aunque no necesariamente canónica) que hace referencia al mismo archivo que p
.
[editar]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 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.
[editar]Notas
Se recomienda a las implementaciones que no consideren que p
no existe como un error.
Para los sistemas operativos basados en POSIX, std::filesystem::absolute(p) es equivalente a std::filesystem::current_path()/ p, excepto cuando p
es la ruta de acceso vacía.
Para Windows, std::filesystem::absolute
puede implementarse como una llamada a GetFullPathNameW
.
[editar]Ejemplo
#include <iostream>#include <filesystem>namespace fs = std::filesystem;int main(){std::filesystem::path p ="foo.c";std::cout<<"La ruta de acceso actual es "<< fs::current_path()<<'\n';std::cout<<"La ruta de acceso absoluta para "<< p <<" es "<< std::filesystem::absolute(p)<<'\n';}
Posible salida:
La ruta de acceso actual es "/tmp/1622355667.5363104" La ruta de acceso absoluta para "foo.c" es "/tmp/1622355667.5363104/foo.c"
[editar]Véase también
(C++17) | Compone una ruta de acceso canónica. (función) |
(C++17) | Compone una ruta de acceso relativa. (función) |