Namespaces
Variants

std::filesystem::path:: make_preferred

From cppreference.net
path & make_preferred ( ) ;
(seit C++17)

Wandelt alle Verzeichnistrennzeichen in der generischen Darstellung des Pfads in das bevorzugte Verzeichnistrennzeichen um.

Beispielsweise wird unter Windows, wo \ das bevorzugte Trennzeichen ist, der Pfad foo / bar konvertiert zu foo\bar .

Inhaltsverzeichnis

Parameter

(keine)

Rückgabewert

* this

Ausnahmen

Kann implementierungsdefinierte Ausnahmen auslösen.

Beispiel

Windows kann / als Separator verwenden, bevorzugt jedoch \ , daher konvertiert make_preferred die Schrägstriche in Backslashes. Andererseits verwendet POSIX \ nicht als Separator, da Backslashes gültige Dateinamenzeichen sind – der Windows-Pfad unter POSIX bezieht sich tatsächlich auf eine Datei mit dem Namen "a \\ b \\ c" . Aus diesem Grund werden die "Separators" nicht konvertiert.

#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';
}

Ausgabe:

// 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"

Siehe auch

constexpr value_type preferred_separator
[static]
Alternativer Verzeichnisseparator, der zusätzlich zum portablen / verwendet werden kann. Unter Windows ist dies der Backslash \ . Unter POSIX ist dies derselbe Schrägstrich / wie der portable Separator
(öffentliche statische Member-Konstante)