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