Spec-Zone.ru › C++

std::filesystem::path::make_preferred

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/filesystem/path/make_preferred

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API