首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

std::filesystem::absolute

Defined in header <filesystem>

path absolute( const std::filesystem::path& p, const std::filesystem::path& base = std::filesystem::current_path() );

(1)

(since C++17)

path system_complete(const std::filesystem::path& p); path system_complete(const std::filesystem::path& p, std::error_code& ec);

(2)

(since C++17)

1%29返回p相对于base根据下列规则:

  • 如果p具有根名称和根目录%28e.g。"C:\users",则返回未修改的路径。
  • 如果p有一个根名,后面没有根目录%28e.g。"C:text.txt"%29,那么base插入在p%27s根名和剩余的p.正式p.root_name() / absolute(base).root_directory() / absolute(base).relative_path() / p.relative_path()被归还,
  • 如果p没有根名称,但根目录%28 e.g。"/var/tmp/file.txt"关于POSIX系统或"\users\ABC\Document.doc"在Windows%29上,则根名为base,如果它有一个,则为p关于POSIX系统的百分比28,p没有修改,在Windows系统上,"\users\ABC\Document.doc""C:\users\ABC\Document.doc".正式absolute(base).root_name() / p会被归还。
  • 如果p没有根名称,也没有根目录%28e.g。"../file.txt",然后整个base优先于p.正式absolute(base) / p会被归还。

2%29获得了绝对路径,该路径标识OS文件打开api将访问的文件,给定路径名。p在POSIX系统上,这相当于%281%29,默认情况下base%28current_path()29%。在Windows系统中,每个逻辑驱动器都有自己的当前工作目录,所以如果p不是绝对的,并且有一个根名组件%28e.g。"E:filename.txt",则使用驱动器%27s当前工作目录,该目录可能是由先前执行的程序设置的。

参数

p

-

path to convert to absolute form

base

-

path (not necessarily absolute) to serve as the starting location

ec

-

out-parameter for error reporting in the non-throwing overload

返回值

返回绝对%28,但不一定是通过组合形成的规范%29路径。pbase如上文所述。

例外

不占用std::error_code&参数抛文件系统[医]误差关于基础OS API错误,使用p作为第一个论点,base作为第二个参数,操作系统错误代码作为错误代码参数。std::bad_alloc如果内存分配失败,则可能引发。过载std::error_code&参数,如果OSAPI调用失败,则将其设置为OSAPI错误代码,并执行ec.clear()如果没有错误发生。这个过载

noexcept规格:

noexcept

注记

在支持根名%28的系统上。Windows%29,调用的结果absolute在具有根名%28 e.g的相对路径上。"D:file.txt"的根名base是不同的,通常会导致一条不存在的路径。

二次

代码语言:javascript
复制
#include <iostream>
#include <filesystem>
namespace fs = std::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';
}

二次

可能的产出:

二次

代码语言:javascript
复制
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"

二次

另见

canonicalweakly_canonical (C++17)

composes a canonical path (function)

relativeproximate (C++17)

composes a relative path (function)

代码语言:txt
复制
 © cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

扫码关注腾讯云开发者

领取腾讯云代金券