path-Klasse

Die path Klasse speichert ein Objekt vom Typ string_type, das hier für die Zwecke der Exposition aufgerufen myname wird, geeignet für die Verwendung als Pfadname. string_type ist ein Synonym für basic_string<value_type>, bei dem value_type es sich um ein Synonym für wchar_t Windows oder char posIX handelt.

Weitere Informationen und Codebeispiele finden Sie unter "Dateisystemnavigation (C++)".

Syntax

class path;

Konstruktoren

Konstruktor Beschreibung
path Erstellt ein Objekt vom Typ path.

TypeDefs

Typname Beschreibung
const_iterator Ein Synonym für iterator.
iterator Ein bidirektionaler Konstanten-Iterator, der die path Komponenten von myname.
string_type Der Typ ist ein Synonym für basic_string<value_type>.

Memberfunktionen

Memberfunktion Beschreibung
append Fügt die angegebene Sequenz nach Bedarf an mypath, konvertiert und fügt eine preferred_separator ein.
assign mypath Ersetzt nach Bedarf durch die angegebene Sequenz.
begin Gibt ein path::iterator Designieren des ersten Pfadelements im Pfadnamen zurück, sofern vorhanden.
c_str Gibt einen Zeiger auf das erste Zeichen in mypath.
clear Führt aus mypath.clear().
compare Gibt Vergleichswerte zurück.
concat Fügt die angegebene Sequenz nach Bedarf an mypath, konvertiert (aber kein Trennzeichen einfügen).
empty Gibt mypath.empty() zurück.
end Gibt einen End-of-Sequence-Iterator vom Typ iteratorzurück.
extension Gibt das Suffix von filename().
filename Gibt die Stammverzeichniskomponente von myname, insbesondere empty() ? path() : *--end(). Die Komponente kann leer sein.
generic_string Gibt this->string<Elem, Traits, Alloc>(al) zurück, wobei jeder umgekehrte Schrägstrich in einen Schrägstrich konvertiert wird (unter Windows).
generic_u16string Gibt u16string() zurück, wobei jeder umgekehrte Schrägstrich in einen Schrägstrich konvertiert wird (unter Windows).
generic_u32string Gibt u32string() zurück, wobei jeder umgekehrte Schrägstrich in einen Schrägstrich konvertiert wird (unter Windows).
generic_u8string Gibt u8string() zurück, wobei jeder umgekehrte Schrägstrich in einen Schrägstrich konvertiert wird (unter Windows).
generic_wstring Gibt wstring() zurück, wobei jeder umgekehrte Schrägstrich in einen Schrägstrich konvertiert wird (unter Windows).
has_extension Gibt !extension().empty()zurück.
has_filename Gibt !filename().empty()zurück.
has_parent_path Gibt !parent_path().empty()zurück.
has_relative_path Gibt !relative_path().empty()zurück.
has_root_directory Gibt !root_directory().empty()zurück.
has_root_name Gibt !root_name().empty()zurück.
has_root_path Gibt !root_path().empty()zurück.
has_stem Gibt !stem().empty()zurück.
is_absolute Für Windows gibt die Funktion zurück has_root_name() && has_root_directory(). Für POSIX gibt die Funktion zurück has_root_directory().
is_relative Gibt !is_absolute() zurück.
make_preferred Wandelt jedes Trennzeichen nach Bedarf in ein preferred_separator .
native Gibt die systemeigene Darstellung des Pfads zurück.
parent_path Gibt die übergeordnete Pfadkomponente von myname.
preferred_separator Das konstante Objekt gibt je nach Betriebssystem des Hosts das bevorzugte Zeichen zum Trennen von Pfadkomponenten zurück.
relative_path Gibt die relative Pfadkomponente von myname.
remove_filename Entfernt den Dateinamen.
replace_extension Ersetzt die Erweiterung von myname.
replace_filename Ersetzt den Dateinamen.
root_directory Gibt die Stammverzeichniskomponente von myname.
root_name Gibt die Stammnamenkomponente von myname.
root_path Gibt die Stammpfadkomponente von myname.
stem Gibt die stem Komponente von myname.
string Konvertiert die in mypath.
swap Führt aus swap(mypath, right.mypath).
u16string Konvertiert die in mypath UTF-16 gespeicherte Sequenz und gibt sie in einem Objekt vom Typ u16stringzurück.
u32string Konvertiert die in mypath UTF-32 gespeicherte Sequenz und gibt sie in einem Objekt vom Typ u32stringzurück.
u8string Konvertiert die in mypath UTF-8 gespeicherte Sequenz und gibt sie in einem Objekt vom Typ u8stringzurück.
value_type Der Typ beschreibt die Pfadelemente, die vom Hostbetriebssystem bevorzugt werden.
wstring Wandelt die vom Hostsystem bevorzugte Codierung für eine wchar_t Sequenz in mypath die Codierung um und gibt sie zurück, die in einem Objekt vom Typ wstringgespeichert ist.

Operatoren

Operator Beschreibung
operator= Ersetzt die Elemente des Pfads durch eine Kopie eines anderen Pfads.
operator+= Verschiedene concat Ausdrücke.
operator/= Verschiedene append Ausdrücke.
operator string_type Gibt myname zurück.

Anforderungen

Header: <filesystem>

Namespace:std::experimental::filesystem

path::append

Fügt die angegebene Sequenz nach Bedarf anmypath, konvertiert und eingefügt.preferred_separator

template <class Source>
path& append(const Source& source);

template <class InIt>
path& append(InIt first, InIt last);

Parameter

source
Angegebene Sequenz.

first
Beginn der angegebenen Sequenz.

last
Ende der angegebenen Sequenz.

path::assign

mypath Ersetzt nach Bedarf durch die angegebene Sequenz.

template <class Source>
path& assign(const Source& source);

template <class InIt>
path& assign(InIt first, InIt last);

Parameter

source
Angegebene Sequenz.

first
Beginn der angegebenen Sequenz.

last
Ende der angegebenen Sequenz.

path::begin

Gibt ein path::iterator Designieren des ersten Pfadelements im Pfadnamen zurück, sofern vorhanden.

iterator begin() const;

path::c_str

Gibt einen Zeiger auf das erste Zeichen in mypath.

const value_type& *c_str() const noexcept;

path::clear

Führt aus mypath.clear().

void clear() noexcept;

path::compare

Diese erste Funktion gibt mypath.compare(pval.native()) zurück. Die zweite Funktion gibt mypath.compare(str) zurück. Die dritte Funktion gibt zurück mypath.compare(ptr).

int compare(const path& pval) const noexcept;
int compare(const string_type& str) const;
int compare(const value_type *ptr) const;

Parameter

pval
Der zu vergleichende Pfad.

str
Zu vergleichende Zeichenfolge.

ptr
Zu vergleichende Zeiger.

path::concat

Fügt die angegebene Sequenz nach Bedarf an mypath, konvertiert (aber kein Trennzeichen einfügen).

template <class Source>
path& concat(const Source& source);

template <class InIt>
path& concat(InIt first, InIt last);

Parameter

source
Angegebene Sequenz.

first
Beginn der angegebenen Sequenz.

last
Ende der angegebenen Sequenz.

path::const_iterator

Ein Synonym für iterator.

typedef iterator const_iterator;

path::empty

Gibt mypath.empty() zurück.

bool empty() const noexcept;

path::end

Gibt einen End-of-Sequence-Iterator vom Typ iteratorzurück.

iterator end() const;

path::extension

Gibt das Suffix von filename().

path extension() const;

Hinweise

Gibt das Suffix der filename() X folgenden Art zurück:

Wenn X == path(".") || X == path("..") oder wenn X kein Punkt enthalten ist, ist das Suffix leer.

Andernfalls beginnt das Suffix mit dem rechten Punkt (und umfasst diesen).

path::filename

Gibt die Stammverzeichniskomponente von myname, insbesondere empty() path() : *--end(). Die Komponente kann leer sein.

path filename() const;

path::generic_string

Gibt this->string<Elem, Traits, Alloc>(al) zurück, wobei jeder umgekehrte Schrägstrich in einen Schrägstrich konvertiert wird (unter Windows).

template <class Elem,
    class Traits = char_traits<Elem>,
    class Alloc = allocator<Elem>>
  basic_string<Elem, Traits, Alloc>
    generic_string(const Alloc& al = Alloc()) const;

string generic_string() const;

path::generic_u16string

Gibt u16string() zurück, wobei jeder umgekehrte Schrägstrich in einen Schrägstrich konvertiert wird (unter Windows).

u16string generic_u16string() const;

path::generic_u32string

Gibt u32string() zurück, wobei jeder umgekehrte Schrägstrich in einen Schrägstrich konvertiert wird (unter Windows).

u32string generic_u32string() const;

path::generic_u8string

Gibt u8string() zurück, wobei jeder umgekehrte Schrägstrich in einen Schrägstrich konvertiert wird (unter Windows).

string generic_u8string() const;

path::generic_wstring

Gibt wstring() zurück, wobei jeder umgekehrte Schrägstrich in einen Schrägstrich konvertiert wird (unter Windows).

wstring generic_wstring() const;

path::has_extension

Gibt !extension().empty()zurück.

bool has_extension() const;

path::has_filename

Gibt !filename().empty()zurück.

bool has_filename() const;

path::has_parent_path

Gibt !parent_path().empty()zurück.

bool has_parent_path() const;

path::has_relative_path

Gibt !relative_path().empty()zurück.

bool has_relative_path() const;

path::has_root_directory

Gibt !root_directory().empty()zurück.

bool has_root_directory() const;

path::has_root_name

Gibt !root_name().empty()zurück.

bool has_root_name() const;

path::has_root_path

Gibt !root_path().empty()zurück.

bool has_root_path() const;

path::has_stem

Gibt !stem().empty()zurück.

bool has_stem() const;

path::is_absolute

Für Windows gibt die Funktion zurück has_root_name() && has_root_directory(). Für POSIX gibt die Funktion zurück has_root_directory().

bool is_absolute() const;

path::is_relative

Gibt !is_absolute() zurück.

bool is_relative() const;

path::iterator

Ein bidirektionaler Konstanten-Iterator, der die Pfadkomponenten von myname.

class iterator
   {
   // bidirectional iterator for path
   typedef bidirectional_iterator_tag iterator_category;
   typedef path_type value_type;
   typedef ptrdiff_t difference_type;
   typedef const value_type *pointer;
   typedef const value_type& reference;
   // ...
   };

Hinweise

Die Klasse beschreibt einen bidirektionalen Konstanten-Iterator, der die path Komponenten myname der Sequenz angibt:

  1. den Stammnamen, falls vorhanden

  2. das Stammverzeichnis, falls vorhanden

  3. die verbleibenden Verzeichniselemente des übergeordneten pathElements , falls vorhanden, mit dem Dateinamen enden, sofern vorhanden

Für pval ein Objekt vom Typ path:

  1. path::iterator X = pval.begin() legt das erste path Element im Pfadnamen fest, falls vorhanden.

  2. X == pval.end() ist true , wenn X Punkte direkt hinter dem Ende der Sequenz von Komponenten liegt.

  3. *X gibt eine Zeichenfolge zurück, die der aktuellen Komponente entspricht.

  4. ++X legt die nächste Komponente in der Sequenz fest, falls vorhanden.

  5. --X legt die vorhergehende Komponente in der Sequenz fest, falls vorhanden.

  6. myname Durch das Ändern werden alle Iteratoren, die Elemente entwerfen, ungültig.myname

path::make_preferred

Wandelt jedes Trennzeichen nach Bedarf in ein preferred_separator .

path& make_preferred();

path::native

Rufen Sie die native Zeichenfolgendarstellung des Pfads ab.

const string_type& native() const noexcept;

Hinweise

Der Pfad ist in einem portablen generischen Format (siehe generic_string()) oder dem systemeigenen Format des Pfads verfügbar. Diese Funktion gibt die systemeigene Zeichenfolge zurück. Auf einem POSIX-System sind das generische Format und das systemeigene Format identisch.

Im folgenden Beispiel unter Windows 11 ist c:/t/temp/temp.txt die generische Pfadzeichenfolge und die systemeigene Zeichenfolge c:\\t\\temp.txt

// Compile with /std:c++17 or higher
#include <filesystem>

int main()
{
    std::filesystem::path p(R"(c:\t\temp.txt)");
    auto native = p.native(); // Windows: L"c:\\t\temp.txt"
    auto generic = p.generic_string(); // Windows: "c:/t/temp.txt"
}

path::operator=

Ersetzt die Elemente des Pfads durch eine Kopie eines anderen Pfads.

path& operator=(const path& right);
path& operator=(path&& right) noexcept;

template <class Source>
path& operator=(const Source& source);

Parameter

right
Das path kopierte In das path.

source
Der Quell-path.

Hinweise

Der erste Memberoperator kopiert right.myname in myname. Der zweite Memberoperator wechselt right.myname zu myname. Der dritte Memberoperator verhält sich wie *this = path(source).

path::operator+=

Verschiedene concat Ausdrücke.

path& operator+=(const path& right);
path& operator+=(const string_type& str);
path& operator+=(const value_type *ptr);
path& operator+=(value_type elem);

template <class Source>
path& operator+=(const Source& source);

template <class Elem>
path& operator+=(Elem elem);

Parameter

right
Der hinzugefügte Pfad.

str
Die hinzugefügte Zeichenfolge.

ptr
Der hinzugefügte Zeiger.

elem
Das hinzugefügte value_type oder Elem.

source
Die hinzugefügte Quelle.

Hinweise

Die Memberfunktionen verhalten sich wie die folgenden entsprechenden Ausdrücke:

  1. concat(right);

  2. concat(path(str));

  3. concat(ptr);

  4. concat(string_type(1, elem));

  5. concat(source);

  6. concat(path(basic_string<Elem>(1, elem)));

path::operator/=

Verschiedene append Ausdrücke.

path& operator/=(const path& right);

template <class Source>
path& operator/=(const Source& source);

Parameter

right
Der hinzugefügte Pfad.

source
Die hinzugefügte Quelle.

Hinweise

Die Memberfunktionen verhalten sich wie die folgenden entsprechenden Ausdrücke:

  1. append(right);

  2. append(source);

path::operator string_type

Gibt myname zurück.

operator string_type() const;

path::parent_path

Gibt die übergeordnete Pfadkomponente von myname.

path parent_path() const;

Hinweise

Gibt die übergeordnete Pfadkomponente von myname, insbesondere das Präfix nach myname dem Entfernen filename().native() und alle unmittelbar vorangehenden Verzeichnistrennzeichen zurück. (Gleich, wenn begin() != end(), ist es die Kombination aller Elemente im Bereich [begin(), --end()) durch aufeinander folgende Anwendung operator/=.) Die Komponente ist möglicherweise leer.

path::path

Erstellt eine path auf verschiedene Weise.

path();

path(const path& right);
path(path&& right) noexcept;

template <class Source>
path(const Source& source);

template <class Source>
path(const Source& source, const locale& loc);

template <class InIt>
path(InIt first, InIt last);

template <class InIt>
path(InIt first, InIt last, const locale& loc);

Parameter

right
Der Pfad, von dem der konstruierte Pfad eine Kopie sein soll.

source
Die Quelle, von der der konstruierte Pfad eine Kopie sein soll.

loc
Das angegebene Gebietsschema.

first
Die Position des ersten zu kopierenden Elements.

last
Die Position des letzten zu kopierenden Elements.

Hinweise

Die Konstruktoren erstellen myname alle auf verschiedene Arten:

Dafür path() ist myname()es .

Für path(const path& right) ist myname(right.myname)es .

Dafür path(path&& right) ist myname(right.myname)es .

Dafür template<class Source> path(const Source& source) ist myname(source)es .

Für template<class Source> path(const Source& source, const locale& loc) sie myname(source)erhalten Sie alle erforderlichen codecvt Facets von loc.

Dafür template<class InIt> path(InIt first, InIt last) ist myname(first, last)es .

Für template<class InIt> path(InIt first, InIt last, const locale& loc) sie myname(first, last)erhalten Sie alle erforderlichen codecvt Facets von loc.

path::preferred_separator

Das konstante Objekt gibt je nach Betriebssystem des Hosts das bevorzugte Zeichen zum Trennen von Pfadkomponenten zurück.

#if _WIN32_C_LIB
static constexpr value_type preferred_separator == L'\\';
#else // assume POSIX
static constexpr value_type preferred_separator == '/';
#endif // filesystem model now defined

Hinweise

In den meisten Kontexten unter Windows ist die Verwendung L'/' in den meisten Kontexten gleichermaßen zulässig.

path::relative_path

Gibt die relative Pfadkomponente von myname.

path relative_path() const;

Hinweise

Gibt die relative Pfadkomponente von myname, insbesondere das Suffix nach myname dem Entfernen root_path().native() und alle unmittelbar nachfolgenden redundanten Verzeichnistrennzeichen zurück. Die Komponente kann leer sein.

path::remove_filename

Entfernt den Dateinamen.

path& remove_filename();

path::replace_extension

Ersetzt die Erweiterung von myname.

path& replace_extension(const path& newext = path());

Parameter

newext
Die neue Erweiterung.

Hinweise

Entfernt zuerst das Suffix extension().native() aus myname. Wenn es sich dann !newext.empty() && newext[0] != dot um einen Punkt handelt *path(".").c_str(), wird der Punkt angefügtmyname. newext Anschließend wird an .myname

path::replace_filename

Ersetzt den Dateinamen.

path& replace_filename(const path& pval);

Parameter

pval
Der Pfad des Dateinamens.

Hinweise

Die Memberfunktion führt Folgendes aus:

remove_filename();

*this /= pval;
return (*this);

path::root_directory

Gibt die Stammverzeichniskomponente von myname.

path root_directory() const;

Hinweise

Die Komponente kann leer sein.

path::root_name

Gibt die Stammnamenkomponente von myname.

path root_name() const;

Hinweise

Die Komponente kann leer sein.

path::root_path

Gibt die Stammpfadkomponente von myname.

path root_path() const;

Hinweise

Gibt die Stammpfadkomponente von myname, insbesondere root_name() / root_directory. Die Komponente kann leer sein.

path::stem

Gibt die stem Komponente von myname.

path stem() const;

Hinweise

Gibt die stem Komponente von myname, insbesondere filename().native() bei entfernten nachgestellten extension().native() . Die Komponente kann leer sein.

path::string

Konvertiert die in mypath.

template \<class Elem, class Traits = char_traits\<Elem>, class Alloc = allocator\<Elem>>
basic_string\<Elem, Traits, Alloc> string(const Alloc& al = Alloc()) const;
string string() const;

Hinweise

Die erste Memberfunktion (Vorlage) konvertiert die sequenz, die auf die gleiche Weise gespeichert mypath ist wie:

  1. string() für string<char, Traits, Alloc>()

  2. wstring() für string<wchar_t, Traits, Alloc>()

  3. u16string() für string<char16_t, Traits, Alloc>()

  4. u32string() für string<char32_t, Traits, Alloc>()

Die zweite Memberfunktion konvertiert die sequenz, die in mypath der vom Hostsystem bevorzugten Codierung für eine char Sequenz gespeichert ist, und gibt sie in einem Objekt vom Typ stringzurück.

path::string_type

Der Typ ist ein Synonym für basic_string<value_type>.

typedef basic_string<value_type> string_type;

path::swap

Führt aus swap(mypath, right.mypath).

void swap(path& right) noexcept;

path::u16string

Konvertiert die in mypath UTF-16 gespeicherte Sequenz und gibt sie in einem Objekt vom Typ u16stringzurück.

u16string u16string() const;

path::u32string

Konvertiert die in mypath UTF-32 gespeicherte Sequenz und gibt sie in einem Objekt vom Typ u32stringzurück.

u32string u32string() const;

path::u8string

Konvertiert die in mypath UTF-8 gespeicherte Sequenz und gibt sie in einem Objekt vom Typ u8stringzurück.

string u8string() const;

path::value_type

Der Typ beschreibt die path vom Hostbetriebssystem bevorzugten Elemente.

#if _WIN32_C_LIB
typedef wchar_t value_type;
#else // assume POSIX
typedef char value_type;
#endif // filesystem model now defined

path::wstring

Wandelt die vom Hostsystem bevorzugte Codierung für eine wchar_t Sequenz in mypath die Codierung um und gibt sie zurück, die in einem Objekt vom Typ wstringgespeichert ist.

wstring wstring() const;

Siehe auch

Headerdateienreferenz