Difference between revisions of "cpp/filesystem/absolute"
From cppreference.com
< cpp | filesystem
(matched parenthesis) |
m (→Exceptions: 1), 2)) |
||
(15 intermediate revisions by 10 users not shown) | |||
Line 1: | Line 1: | ||
− | {{cpp/filesystem/title|absolute | + | {{cpp/filesystem/title|absolute}} |
{{cpp/filesystem/navbar}} | {{cpp/filesystem/navbar}} | ||
{{dcl begin}} | {{dcl begin}} | ||
− | {{dcl header | filesystem}} | + | {{dcl header|filesystem}} |
− | {{dcl | since=c++17 | + | {{dcl|num=1|since=c++17|1= |
− | path absolute( const std::filesystem::path& p | + | path absolute( const std::filesystem::path& p ); |
− | + | ||
}} | }} | ||
− | {{dcl | since=c++17 | | + | {{dcl|num=2|since=c++17|1= |
− | + | path absolute( const std::filesystem::path& p, std::error_code& ec ); | |
− | path | + | |
}} | }} | ||
{{dcl end}} | {{dcl end}} | ||
− | + | Returns a path referencing the same file system location as {{c|p}}, for which {{ltt|cpp/filesystem/path/is_absrel|filesystem::path::is_absolute()}} is {{c|true}}. | |
− | + | ||
− | + | @2@ This non-throwing overload returns default-constructed path if an error occurs. | |
− | + | ||
− | + | ||
− | @2@ | + | |
===Parameters=== | ===Parameters=== | ||
{{par begin}} | {{par begin}} | ||
− | {{par | p | path to convert to absolute form | + | {{par|p|path to convert to absolute form}} |
− | + | {{par|ec|out-parameter for error reporting in the non-throwing overload}} | |
− | {{par | ec | out-parameter for error reporting in the non-throwing overload }} | + | |
{{par end}} | {{par end}} | ||
===Return value=== | ===Return value=== | ||
− | Returns an absolute (although not necessarily canonical) | + | Returns an absolute (although not necessarily canonical) pathname referencing the same file as {{c|p}}. |
===Exceptions=== | ===Exceptions=== | ||
− | {{cpp/filesystem/ | + | {{cpp/filesystem/error handling|p|throw=1/2}} |
===Notes=== | ===Notes=== | ||
− | + | Implementations are encouraged to not consider {{c|p}} not existing to be an error. | |
+ | |||
+ | For POSIX-based operating systems, {{c|std::filesystem::absolute(p)}} is equivalent to {{c|std::filesystem::current_path() / p}} except for when {{c|p}} is the empty path. | ||
+ | |||
+ | For Windows, {{tt|std::filesystem::absolute}} may be implemented as a call to [https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getfullpathnamew {{tt|GetFullPathNameW}}]. | ||
===Example=== | ===Example=== | ||
− | {{example|code= | + | {{example |
− | + | |code= | |
#include <filesystem> | #include <filesystem> | ||
+ | #include <iostream> | ||
namespace fs = std::filesystem; | namespace fs = std::filesystem; | ||
+ | |||
int main() | int main() | ||
{ | { | ||
− | + | std::filesystem::path p = "foo.c"; | |
− | std::cout << "Current path is " << | + | std::cout << "Current path is " << std::filesystem::current_path() << '\n'; |
− | + | std::cout << "Absolute path for " << p << " is " << fs::absolute(p) << '\n'; | |
− | + | ||
} | } | ||
|p=true | |p=true | ||
|output= | |output= | ||
− | Current path is " | + | Current path is "/tmp/1666297965.0051296" |
− | Absolute path for " | + | Absolute path for "foo.c" is "/tmp/1666297965.0051296/foo.c" |
− | + | ||
}} | }} | ||
===See also=== | ===See also=== | ||
{{dsc begin}} | {{dsc begin}} | ||
− | {{dsc inc | cpp/filesystem/dsc canonical}} | + | {{dsc inc|cpp/filesystem/dsc canonical}} |
− | {{dsc inc | cpp/filesystem/dsc relative}} | + | {{dsc inc|cpp/filesystem/dsc relative}} |
{{dsc end}} | {{dsc end}} | ||
+ | |||
+ | {{langlinks|es|ja|ru|zh}} |
Latest revision as of 08:32, 4 September 2023
Defined in header <filesystem>
|
||
path absolute( const std::filesystem::path& p ); |
(1) | (since C++17) |
path absolute( const std::filesystem::path& p, std::error_code& ec ); |
(2) | (since C++17) |
Returns a path referencing the same file system location as p, for which filesystem::path::is_absolute() is true.
2) This non-throwing overload returns default-constructed path if an error occurs.
Contents |
[edit] Parameters
p | - | path to convert to absolute form |
ec | - | out-parameter for error reporting in the non-throwing overload |
[edit] Return value
Returns an absolute (although not necessarily canonical) pathname referencing the same file as p.
[edit] Exceptions
Any overload not marked noexcept
may throw std::bad_alloc if memory allocation fails.
1) Throws std::filesystem::filesystem_error on underlying OS API errors, constructed with p as the first path argument and the OS error code as the error code argument.
2) Sets a std::error_code& parameter to the OS API error code if an OS API call fails, and executes ec.clear() if no errors occur.
[edit] Notes
Implementations are encouraged to not consider p not existing to be an error.
For POSIX-based operating systems, std::filesystem::absolute(p) is equivalent to std::filesystem::current_path() / p except for when p is the empty path.
For Windows, std::filesystem::absolute
may be implemented as a call to GetFullPathNameW
.
[edit] Example
Run this code
#include <filesystem> #include <iostream> namespace fs = std::filesystem; int main() { std::filesystem::path p = "foo.c"; std::cout << "Current path is " << std::filesystem::current_path() << '\n'; std::cout << "Absolute path for " << p << " is " << fs::absolute(p) << '\n'; }
Possible output:
Current path is "/tmp/1666297965.0051296" Absolute path for "foo.c" is "/tmp/1666297965.0051296/foo.c"
[edit] See also
(C++17) |
composes a canonical path (function) |
(C++17) |
composes a relative path (function) |