std::filesystem::path:: append, std::filesystem::path:: operator/=
|
path
&
operator
/
=
(
const
path
&
p
)
;
|
(1) | (seit C++17) |
|
template
<
class
Source
>
path & operator / = ( const Source & source ) ; |
(2) | (seit C++17) |
|
template
<
class
Source
>
path & append ( const Source & source ) ; |
(3) | (seit C++17) |
|
template
<
class
InputIt
>
path & append ( InputIt first, InputIt last ) ; |
(4) | (seit C++17) |
path::preferred_separator
zum generischen Format von
*
this
hinzu.
// Wo "//host" ein Root-Name ist path("//host") / "foo" // das Ergebnis ist "//host/foo" (anhängen mit Separator) path("//host/") / "foo" // das Ergebnis ist auch "//host/foo" (anhängen ohne Separator) // Unter POSIX, path("foo") / "" // das Ergebnis ist "foo/" (anhängt) path("foo") / "/bar"; // das Ergebnis ist "/bar" (ersetzt) // Unter Windows, path("foo") / "C:/bar"; // das Ergebnis ist "C:/bar" (ersetzt) path("foo") / "C:"; // das Ergebnis ist "C:" (ersetzt) path("C:") / ""; // das Ergebnis ist "C:" (anhängt, ohne Separator) path("C:foo") / "/bar"; // ergibt "C:/bar" (entfernt relativen Pfad, dann anhängen) path("C:foo") / "C:bar"; // ergibt "C:foo/bar" (anhängen, unter Auslassung von p's Root-Name)
(2)
und
(3)
nehmen an der Überlagerungsauflösung nur teil, wenn
Source
und
path
nicht denselben Typ haben, und entweder:
-
Sourceist eine Spezialisierung von std::basic_string oder std::basic_string_view , oder - std:: iterator_traits < std:: decay_t < Source >> :: value_type gültig ist und einen möglicherweise const-qualifizierten Zeichentyp bezeichnet ( char , char8_t , (seit C++20) char16_t , char32_t , oder wchar_t ).
Inhaltsverzeichnis |
Parameter
| p | - | anzuhängender Pfadname |
| source | - | std::basic_string , std::basic_string_view , nullterminierter Multicharakter-String oder ein Eingabeiterator, der auf eine nullterminierte Multicharakter-Sequenz zeigt, die einen Pfadnamen darstellt (entweder im portablen oder im nativen Format) |
| first, last | - | Paar von LegacyInputIterator s , die eine Multicharakter-Sequenz angeben, die einen Pfadnamen darstellt |
| Typanforderungen | ||
-
InputIt
muss die Anforderungen von
LegacyInputIterator
erfüllen.
|
||
-
InputIt
muss einer der kodierten Zeichentypen sein (
char
,
wchar_t
,
char16_t
und
char32_t
).
|
||
Rückgabewert
* this
Ausnahmen
Kann std:: bad_alloc werfen, wenn die Speicherallokation fehlschlägt.
Hinweise
Diese Funktionen liefern effektiv eine Annäherung an die Bedeutung des Argumentpfads p in einer Umgebung, in der * this das Startverzeichnis ist.
Beispiel
Die Ausgabe wird unter Windows erzeugt.
#include <filesystem> #include <iostream> namespace fs = std::filesystem; int main() { fs::path p1 = "C:"; p1 /= "Users"; // does not insert a separator std::cout << "\"C:\" / \"Users\" == " << p1 << '\n'; p1 /= "batman"; // inserts fs::path::preferred_separator, '\' on Windows std::cout << "\"C:\" / \"Users\" / \"batman\" == " << p1 << '\n'; }
Mögliche Ausgabe:
"C:" / "Users" == "C:Users" "C:" / "Users" / "batman" == "C:Users\\batman"
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
|
verkettet zwei Pfade ohne Einführung eines Verzeichnistrennzeichens
(öffentliche Elementfunktion) |
|
|
(C++17)
|
verkettet zwei Pfade mit einem Verzeichnistrennzeichen
(Funktion) |