Namespaces
Variants

std::filesystem::path:: concat, std::filesystem::path:: operator+=

From de.cppreference.net
path & operator + = ( const path & p ) ;
(1) (seit C++17)
path & operator + = ( const string_type & str ) ;
path & operator + = ( std:: basic_string_view < value_type > str ) ;
(2) (seit C++17)
path & operator + = ( const value_type * ptr ) ;
(3) (seit C++17)
path & operator + = ( value_type x ) ;
(4) (seit C++17)
template < class CharT >
path & operator + = ( CharT x ) ;
(5) (seit C++17)
template < class Source >
path & operator + = ( const Source & source ) ;
(6) (seit C++17)
template < class Source >
path & concat ( const Source & source ) ;
(7) (seit C++17)
template < class InputIt >
path & concat ( InputIt first, InputIt last ) ;
(8) (seit C++17)

Verkettet den aktuellen Pfad und das Argument

1-3,6,7) Hängt path ( p ) . native ( ) an den in * this gespeicherten Pfadnamen im nativen Format an. Dies manipuliert direkt den Wert von native ( ) und ist möglicherweise nicht portabel zwischen Betriebssystemen.
4,5) Gleich wie return * this + = std:: basic_string_view ( & x, 1 ) ; .
8) Gleich wie return * this + = path ( first, last ) ; .

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

Inhaltsverzeichnis

Parameter

p - Pfad, der angehängt werden soll
str - anzuhängende Zeichenkette oder String-View
ptr - Zeiger auf den Anfang eines nullterminierten Strings zum Anhängen
x - einzelnes anzuhängendes Zeichen
source - std::basic_string , std::basic_string_view , nullterminierter Multicharacter-String oder ein Input-Iterator, der auf eine nullterminierte Multicharacter-Sequenz zeigt, die einen Pfadnamen darstellt (entweder im portablen oder nativen Format)
first, last - Paar von LegacyInputIterator s , die eine Multicharacter-Sequenz spezifizieren, die einen Pfadnamen darstellt
Typanforderungen
-
InputIt muss die Anforderungen von LegacyInputIterator erfüllen.
-
Der Werttyp von InputIt muss einer der kodierten Zeichentypen sein ( char , wchar_t , char16_t und char32_t ).
-
CharT 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

Im Gegensatz zu append() oder operator/= werden keine zusätzlichen Verzeichnistrennzeichen eingefügt.

Beispiel

#include <filesystem>
#include <iostream>
#include <string>
int main()
{
    std::filesystem::path p1; // ein leerer Pfad
    p1 += "var"; // fügt keinen Separator ein
    std::cout << R"("" + "var" --> )" << p1 << '\n';
    p1 += "lib"; // fügt keinen Separator ein
    std::cout << R"("var" + "lib" --> )" << p1 << '\n';
    auto str = std::string{"1234567"};
    p1.concat(std::begin(str) + 3, std::end(str) - 1);
    std::cout << "p1.concat --> " << p1 << '\n';
}

Ausgabe:

"" + "var" --> "var"
"var" + "lib" --> "varlib"
p1.concat --> "varlib456"

Fehlerberichte

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

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
LWG 3055 C++17 die Spezifikation für die Verkettung eines einzelnen Zeichens war fehlerhaft korrigiert
LWG 3244 C++17 die Einschränkung, dass Source nicht path sein kann, fehlte hinzugefügt

Siehe auch

fügt Elemente mit einem Verzeichnisseparator zum Pfad hinzu
(öffentliche Elementfunktion)
(C++17)
verkettet zwei Pfade mit einem Verzeichnisseparator
(Funktion)