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 это та же прямая косая черта / , что и портируемый разделитель
(публичная статическая константа-член)