std::experimental::filesystem:: absolute, std::experimental::filesystem:: system_complete
From cppreference.net
<
cpp
|
experimental
|
fs
|
Definido en el encabezado
<experimental/filesystem>
|
||
|
path absolute
(
const
path
&
p,
const
path
&
base
=
current_path
(
)
)
;
|
(1) | (filesystem TS) |
|
path system_complete
(
const
path
&
p
)
;
path system_complete ( const path & p, error_code & ec ) ; |
(2) | (filesystem TS) |
1)
Devuelve la ruta absoluta de
p
relativa a
base
de acuerdo con las siguientes reglas:
-
- Si p tiene tanto nombre de raíz como directorio raíz (ej. "C:\users" ), entonces la ruta se devuelve sin modificaciones.
- Si p tiene un nombre de raíz no seguido por un directorio raíz (ej. "C:text.txt" ), entonces base se inserta entre el nombre de raíz de p y el resto de p . Formalmente, p. root_name ( ) / fs :: absolute ( base ) . root_directory ( ) / fs :: absolute ( base ) . relative_path ( ) / p. relative_path ( ) se devuelve.
- Si p no tiene nombre de raíz pero tiene directorio raíz (ej. "/var/tmp/file.txt" en un sistema POSIX o "\users \A BC\Document.doc" en Windows), entonces el nombre de raíz de base , si tiene uno, se antepone a p (en un sistema POSIX, p no se modifica; en un sistema Windows, "\users \A BC\Document.doc" se convierte en "C:\users \A BC\Document.doc" ). Formalmente, fs :: absolute ( base ) . root_name ( ) / p se devuelve.
- Si p no tiene nombre de raíz ni directorio raíz (ej. "../file.txt" ), entonces todo base se antepone a p . Formalmente, absolute ( base ) / p se devuelve.
2)
Obtiene la ruta absoluta que identifica el archivo al que la API de apertura de archivos del sistema operativo accedería dada la ruta
p
. En sistemas POSIX, esto equivale a
(1)
con el valor predeterminado de
base
(
fs::current_path()
). En sistemas Windows, cada unidad lógica tiene su propio directorio de trabajo actual, por lo que si
p
no es ya absoluta y tiene un componente de nombre de raíz (ej.
"E:filename.txt"
), se utiliza el directorio de trabajo actual de esa unidad, que puede haber sido establecido por un programa ejecutado anteriormente.
Contenidos |
Parámetros
| p | - | ruta a convertir a forma absoluta |
| base | - | ruta (no necesariamente absoluta) para usar como ubicación inicial |
| ec | - | parámetro de salida para reporte de errores en la sobrecarga no lanzadora |
Valor de retorno
Devuelve una ruta absoluta (aunque no necesariamente canónica) formada al combinar p y base como se describió anteriormente.
Excepciones
The overload that does not take an error_code & parameter throws filesystem_error on underlying OS API errors, constructed with p as the first argument, base as the second argument, and the OS error code as the error code argument. std:: bad_alloc may be thrown if memory allocation fails. The overload taking an error_code & parameter sets it to the OS API error code if an OS API call fails, and executes ec. clear ( ) if no errors occur. This overload has
noexcept
especificación:
noexcept
Notas
En sistemas que admiten nombres de raíz (por ejemplo, Windows), el resultado de llamar a
absolute
en una ruta relativa que tiene un nombre de raíz (por ejemplo,
"D:file.txt"
cuando el nombre de raíz de
base
es diferente generalmente resultará en una ruta inexistente.
Ejemplo
Ejecutar este código
#include <filesystem> #include <iostream> namespace fs = std::experimental::filesystem; int main() { fs::path p = "C:cl.exe"; std::cout << "Current path is " << fs::current_path() << '\n' << "Absolute path for " << p << " is " << fs::absolute(p) << '\n' << "System complete path for " << p << " is " << fs::system_complete(p) << '\n'; }
Salida posible:
Current path is "D:/local/ConsoleApplication1" Absolute path for "C:cl.exe" is "C:/local/ConsoleApplication1/cl.exe" System complete path for "C:cl.exe" is "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\cl.exe"
Véase también
|
compone una ruta canónica
(función) |