Spec-Zone.ru › C++

std::filesystem::path::make_preferred

path& make_preferred();
(since 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/w/cpp/filesystem/path/make_preferred

Spec-Zone.ru

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