Namespaces
Variants

std::experimental::filesystem:: absolute, std::experimental::filesystem:: system_complete

From cppreference.net
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

#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)