Namespaces
Variants

std::filesystem::path:: make_preferred

From cppreference.net
path & make_preferred ( ) ;
(自 C++17 起)

将路径通用格式视图中的所有目录分隔符转换为首选目录分隔符。

例如,在Windows系统中, \ 是首选分隔符,路径 foo / bar 将被转换为 foo\bar

目录

参数

(无)

返回值

* this

异常

可能抛出实现定义的异常。

示例

Windows系统可以使用 / 作为分隔符,但更倾向于使用 \ ,因此 make_preferred 会将正斜杠转换为反斜杠。另一方面,POSIX系统不使用 \ 作为分隔符,因为反斜杠是有效的文件名字符——Windows路径在POSIX系统上实际指向名为 "a \\ b \\ c" 的文件。基于这个原因,"分隔符"不会被转换。

#include <filesystem>
#include <iostream>
int main()
{
    std::filesystem::path
        windows_path("a\\b\\c"),
        posix_path("a/b/c");
    std::cout
        << "Windows path: "
        << windows_path << " -> "
        << windows_path.make_preferred() << '\n'
        << "POSIX path: "
        << posix_path << " -> "
        << posix_path.make_preferred() << '\n';
}

输出:

// on Windows
Windows path: "a\\b\\c" -> "a\\b\\c"
POSIX path: "a/b/c" -> "a\\b\\c"
// on POSIX
Windows path: "a\\b\\c" -> "a\\b\\c"
POSIX path: "a/b/c" -> "a/b/c"

参见

constexpr value_type preferred_separator
[static]
可替代的目录分隔符,除可移植的 / 外亦可使用。在 Windows 上,此为反斜杠字符 \ 。在 POSIX 上,此与可移植分隔符相同,均为正斜杠 /
(公开静态成员常量)