Namespaces
Variants

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

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

Concatène le chemin actuel et l'argument

1-3,6,7) Ajoute path ( p ) . native ( ) au nom de chemin stocké dans * this dans le format natif. Cela manipule directement la valeur de native ( ) et peut ne pas être portable entre les systèmes d'exploitation.
4,5) Identique à return * this + = std:: basic_string_view ( & x, 1 ) ; .
8) Identique à return * this + = path ( first, last ) ; .

(6) et (7) participent à la résolution de surcharge uniquement si Source et path ne sont pas du même type, et soit :

Table des matières

Paramètres

p - chemin à ajouter
str - chaîne ou vue de chaîne à ajouter
ptr - pointeur vers le début d'une chaîne terminée par un caractère nul à ajouter
x - caractère unique à ajouter
source - std::basic_string , std::basic_string_view , chaîne multicaractère terminée par un caractère nul, ou un itérateur d'entrée pointant vers une séquence multicaractère terminée par un caractère nul, qui représente un nom de chemin (soit en format portable, soit en format natif)
first, last - paire d' LegacyInputIterator s qui spécifie une séquence multicaractère représentant un nom de chemin
Exigences de type
-
InputIt doit satisfaire aux exigences de LegacyInputIterator .
-
Le type de valeur de InputIt doit être l'un des types de caractères encodés ( char , wchar_t , char16_t et char32_t ).
-
CharT doit être l'un des types de caractères encodés ( char , wchar_t , char16_t et char32_t ).

Valeur de retour

* this

Exceptions

Peut lever std:: bad_alloc si l'allocation de mémoire échoue.

Notes

Contrairement à append() ou operator/= , les séparateurs de répertoire supplémentaires ne sont jamais introduits.

Exemple

#include <filesystem>
#include <iostream>
#include <string>
int main()
{
    std::filesystem::path p1; // un chemin vide
    p1 += "var"; // n'insère pas de séparateur
    std::cout << R"("" + "var" --> )" << p1 << '\n';
    p1 += "lib"; // n'insère pas de séparateur
    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';
}

Sortie :

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

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Applicable à Comportement publié Comportement corrigé
LWG 3055 C++17 la spécification de concaténation d'un seul caractère était mal formée rendue bien formée
LWG 3244 C++17 la contrainte que Source ne peut pas être path était manquante ajoutée

Voir aussi

ajoute des éléments au chemin avec un séparateur de répertoire
(fonction membre publique)
(C++17)
concatène deux chemins avec un séparateur de répertoire
(fonction)