std::filesystem::path::concat, std::filesystem::path::operator+=
Von cppreference.com
< cpp | filesystem | path
| 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) Identisch mit return *this += std::basic_string_view(&x, 1);.
8) Identisch mit return *this += path(first, last);.
(6) und (7) nehmen nur an der Überladungsauflösung teil, wenn `Source` und `path` nicht denselben Typ haben und entweder
-
Sourceeine Spezialisierung von std::basic_string oder std::basic_string_view ist, oder - std::iterator_traits<std::decay_t<Source>>::value_type gültig ist und einen möglicherweise const-qualifizierten codierten Zeichentyp bezeichnet (char, char8_t, (seit C++20)char16_t, char32_t oder wchar_t).
Inhalt |
[bearbeiten] Parameter
| p | - | anzuhängender Pfad |
| str | - | anzuhängende Zeichenkette oder Zeichenkettenansicht |
| ptr | - | Zeiger auf den Anfang einer nullterminierten Zeichenkette, die angehängt werden soll |
| x | - | anzuhängendes einzelnes Zeichen |
| source | - | std::basic_string, std::basic_string_view, nullterminierte Multizeichenkette oder ein Eingabeiterator, der auf eine nullterminierte Multizeichensequenz zeigt, welche einen Pfadnamen (entweder im portablen oder im nativen Format) darstellt |
| first, last | - | Paar von LegacyInputIteratoren, die eine Multizeichenkette bezeichnen, 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). | ||
[bearbeiten] Rückgabewert
*this
[bearbeiten] Ausnahmen
Kann std::bad_alloc werfen, wenn die Speicherzuweisung fehlschlägt.
[bearbeiten] Hinweise
Im Gegensatz zu append() oder operator/= werden niemals zusätzliche Verzeichnisseindungen eingefügt.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <filesystem> #include <iostream> #include <string> int main() { std::filesystem::path p1; // an empty path p1 += "var"; // does not insert a separator std::cout << R"("" + "var" --> )" << p1 << '\n'; p1 += "lib"; // does not insert a separator 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"
[bearbeiten] 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 3055 | C++17 | die Spezifikation für die Verkettung eines einzelnen Zeichens war fehlerhaft | wurde wohlgeformt gemacht |
| LWG 3244 | C++17 | Es fehlte die Bedingung, dass Source nicht path sein kann |
hinzugefügt |
[bearbeiten] Siehe auch
| hängt Elemente mit einem Verzeichnistrenner an den Pfad an (public member function) | |
| (C++17) |
verkettet zwei Pfade mit einem Verzeichnistrenner (function) |