Namespaces
Variants

std::filesystem::path:: path

From de.cppreference.net
path ( ) noexcept ;
(1) (seit C++17)
path ( const path & p ) ;
(2) (seit C++17)
path ( path && p ) noexcept ;
(3) (seit C++17)
path ( string_type && source, format fmt = auto_format ) ;
(4) (seit C++17)
template < class Source >
path ( const Source & source, format fmt = auto_format ) ;
(5) (seit C++17)
template < class InputIt >
path ( InputIt first, InputIt last, format fmt = auto_format ) ;
(6) (seit C++17)
template < class Source >
path ( const Source & source, const std:: locale & loc, format fmt = auto_format ) ;
(7) (seit C++17)
template < class InputIt >
path ( InputIt first, InputIt last, const std:: locale & loc, format fmt = auto_format ) ;
(8) (seit C++17)

Konstruiert ein neues path Objekt.

1) Konstruiert einen leeren Pfad.
2) Kopierkonstruktor. Erstellt einen Pfad, dessen Pfadname sowohl im nativen als auch im generischen Format derselbe ist wie der von p .
3) Move-Konstruktor. Konstruiert einen Pfad, dessen Pfadname sowohl im nativen als auch im generischen Format derselbe ist wie der von p , p bleibt in einem gültigen, aber unspezifizierten Zustand.
4-6) Konstruiert den Pfad aus einer Zeichensequenz (Format interpretiert gemäß fmt ), bereitgestellt durch source (4,5) , was ein Zeiger oder ein Eingabe-Iterator auf eine nullterminierte Zeichen-/Breitzeichensequenz ist, ein std::basic_string oder ein std::basic_string_view , oder dargestellt als ein Paar von Eingabe-Iteratoren [ first , last ) (6) . Jeder der Zeichentypen char , char8_t , (seit C++20) char16_t , char32_t , wchar_t ist erlaubt, und die Methode der Konvertierung in den nativen Zeichensatz hängt vom verwendeten Zeichentyp von source ab.
  • Wenn der Quell-Zeichentyp char ist, wird angenommen, dass die Kodierung der Quelle die native Schmalkodierung ist (daher findet auf POSIX-Systemen keine Konvertierung statt).
  • Wenn der Quell-Zeichentyp char8_t ist, wird Konvertierung von UTF-8 zur nativen Dateisystemkodierung verwendet.
(seit C++20)
  • Wenn der Quell-Zeichentyp char16_t ist, wird Konvertierung von UTF-16 zur nativen Dateisystemkodierung verwendet.
  • Wenn der Quell-Zeichentyp char32_t ist, wird Konvertierung von UTF-32 zur nativen Dateisystemkodierung verwendet.
  • Wenn der Quell-Zeichentyp wchar_t ist, wird angenommen, dass die Eingabe die native Breitkodierung ist (daher findet auf Windows keine Konvertierung statt).
7,8) Konstruiert den Pfad aus einer Zeichensequenz (Format interpretiert gemäß fmt ), bereitgestellt durch source (7) , die ein Zeiger oder ein Eingabe-Iterator auf eine nullterminierte Zeichensequenz ist, ein std::string , ein std::string_view , oder dargestellt als ein Paar von Eingabe-Iteratoren [ first , last ) (8) . Der einzige erlaubte Zeichentyp ist char . Verwendet loc zur Durchführung der Zeichenkodierungsumwandlung. Wenn value_type wchar_t ist, wird die Konvertierung zu Breitzeichen mit dem std:: codecvt < wchar_t , char , std:: mbstate_t > -Facet von loc durchgeführt. Andernfalls wird zuerst zu Breitzeichen mit dem std:: codecvt < wchar_t , char , std:: mbstate_t > -Facet konvertiert und dann zum nativen Dateisystem-Zeichentyp mit dem std:: codecvt < wchar_t ,value_type > -Facet von loc konvertiert.

(5) und (7) nehmen nur dann an der Überladungsauflösung teil, wenn Source und path nicht denselben Typ haben, und entweder:

Inhaltsverzeichnis

Parameter

p - ein zu kopierender Pfad
source - std::basic_string , std::basic_string_view , Zeiger auf eine nullterminierte Zeichenkette oder Eingabeiterator mit einem Zeichenwerttyp, der auf eine nullterminierte Zeichensequenz zeigt (der Zeichentyp muss char für Überladung (7) sein)
first, last - Paar von LegacyInputIterator s , die eine Zeichensequenz spezifizieren
fmt - Aufzählungswert vom Typ path::format , der angibt, wie das Pfadnamensformat zu interpretieren ist
loc - Locale, die die zu verwendende Kodierungsumwandlung definiert
Typanforderungen
-
InputIt muss die Anforderungen von LegacyInputIterator erfüllen.
-
Der Werttyp von InputIt muss einer der Zeichentypen char , wchar_t , char8_t , (seit C++20) char16_t und char32_t sein, um die Überladung (6) zu verwenden.
-
Der Werttyp von InputIt muss char sein, um die Überladung (8) zu verwenden.

Exceptions

2,4-8) Kann implementierungsdefinierte Ausnahmen werfen.

Hinweise

Für portable Pfadnamengenerierung aus Unicode-Zeichenketten siehe u8path .

(bis C++20)

path -Konstruktor unterstützt die Erstellung aus UTF-8-Zeichenketten, wenn die Quelle eine Sequenz von char8_t ist.

(seit C++20)

Beispiel

#include <filesystem>
#include <iostream>
namespace fs = std::filesystem;
int main()
{
    fs::path p1 = "/usr/lib/sendmail.cf"; // portables Format
    fs::path p2 = "C:\\users\\abcdef\\AppData\\Local\\Temp\\"; // natives Format
    fs::path p3 = U"D:/猫.txt"; // UTF-32-Zeichenkette
    fs::path p4 = u8"~/狗.txt"; // UTF-8-Zeichenkette
    std::cout << "p1 = " << p1 << '\n'
              << "p2 = " << p2 << '\n'
              << "p3 = " << p3 << '\n'
              << "p4 = " << p4 << '\n';
}

Ausgabe:

p1 = "/usr/lib/sendmail.cf"
p2 = "C:\\users\\abcdef\\AppData\\Local\\Temp\\"
p3 = "D:/猫.txt"
p4 = "~/狗.txt"

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 3244 C++17 Constraint, dass Source nicht path sein kann, fehlte hinzugefügt

Siehe auch

(C++17) (veraltet in C++20)
erstellt einen path aus einer UTF-8-kodierten Quelle
(Funktion)