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