Namensräume
Varianten
Aktionen

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

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

#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) [edit]
(C++17)
verkettet zwei Pfade mit einem Verzeichnistrenner
(function) [edit]