std::experimental::filesystem:: absolute, std::experimental::filesystem:: system_complete
From cppreference.net
<
cpp
|
experimental
|
fs
|
Определено в заголовочном файле
<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)
Возвращает абсолютный путь
p
относительно
base
согласно следующим правилам:
-
- Если p имеет как имя корня, так и корневую директорию (например, "C:\users" ), то путь возвращается без изменений.
- Если p имеет имя корня, не сопровождаемое корневой директорией (например, "C:text.txt" ), то base вставляется между именем корня p и остальной частью p . Формально возвращается p. root_name ( ) / fs :: absolute ( base ) . root_directory ( ) / fs :: absolute ( base ) . relative_path ( ) / p. relative_path ( ) .
- Если p не имеет имени корня, но имеет корневую директорию (например, "/var/tmp/file.txt" в POSIX-системе или "\users \A BC\Document.doc" в Windows), то имя корня base (если оно есть) добавляется к p (в POSIX-системе p не изменяется, в Windows "\users \A BC\Document.doc" становится "C:\users \A BC\Document.doc" ). Формально возвращается fs :: absolute ( base ) . root_name ( ) / p .
- Если p не имеет ни имени корня, ни корневой директории (например, "../file.txt" ), то весь base добавляется к p . Формально возвращается absolute ( base ) / p .
2)
Получает абсолютный путь, идентифицирующий файл, к которому обратился бы API открытия файлов ОС при заданном пути
p
. В POSIX-системах это эквивалентно
(1)
со значением
base
по умолчанию (
fs::current_path()
). В системах Windows каждый логический диск имеет свою текущую рабочую директорию, поэтому если
p
не является абсолютным и содержит компонент имени корневого каталога (например,
"E:filename.txt"
), используется текущая рабочая директория этого диска, которая могла быть установлена ранее выполнением другой программы.
Содержание |
Параметры
| p | - | путь для преобразования в абсолютную форму |
| base | - | путь (не обязательно абсолютный), используемый в качестве начального местоположения |
| ec | - | выходной параметр для сообщения об ошибках в непорождающей перегрузке |
Возвращаемое значение
Возвращает абсолютный (хотя не обязательно канонический) путь, сформированный путем комбинирования p и base как описано выше.
Исключения
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
спецификация:
noexcept
Примечания
На системах, поддерживающих корневые имена (например, Windows), результат вызова
absolute
для относительного пути с корневым именем (например,
"D:file.txt"
), когда корневое имя
base
отличается, обычно приводит к несуществующему пути.
Пример
Запустить этот код
#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'; }
Возможный вывод:
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"
Смотрите также
|
формирует канонический путь
(функция) |