std::filesystem::path:: concat, std::filesystem::path:: operator+=
|
path
&
operator
+
=
(
const
path
&
p
)
;
|
(1) | (C++17以降) |
|
path
&
operator
+
=
(
const
string_type
&
str
)
;
path & operator + = ( std:: basic_string_view < value_type > str ) ; |
(2) | (C++17以降) |
|
path
&
operator
+
=
(
const
value_type
*
ptr
)
;
|
(3) | (C++17以降) |
|
path
&
operator
+
=
(
value_type x
)
;
|
(4) | (C++17以降) |
|
template
<
class
CharT
>
path & operator + = ( CharT x ) ; |
(5) | (C++17以降) |
|
template
<
class
Source
>
path & operator + = ( const Source & source ) ; |
(6) | (C++17以降) |
|
template
<
class
Source
>
path & concat ( const Source & source ) ; |
(7) | (C++17以降) |
|
template
<
class
InputIt
>
path & concat ( InputIt first, InputIt last ) ; |
(8) | (C++17以降) |
現在のパスと引数を連結します
(6)
および
(7)
は、以下のいずれかの条件が満たされる場合にのみオーバーロード解決に参加します:
Source
と
path
が同じ型ではないこと、かつ以下のいずれか:
-
Sourceは std::basic_string または std::basic_string_view の特殊化、あるいは - std:: iterator_traits < std:: decay_t < Source >> :: value_type が有効であり、const修飾可能性のあるエンコーディング文字型( char 、 char8_t 、 (C++20以降) char16_t 、 char32_t 、または wchar_t )を示す場合。
目次 |
パラメータ
| p | - | 追加するパス |
| str | - | 追加する文字列または文字列ビュー |
| ptr | - | 追加するヌル終端文字列の先頭へのポインタ |
| x | - | 追加する単一文字 |
| source | - | std::basic_string 、 std::basic_string_view 、ヌル終端マルチ文字列、またはヌル終端マルチ文字シーケンスを指す入力イテレータ(ポータブル形式またはネイティブ形式のいずれかのパス名を表す) |
| first, last | - | パス名を表すマルチ文字シーケンスを指定する LegacyInputIterator s のペア |
| 型要件 | ||
-
InputIt
は
LegacyInputIterator
の要件を満たさなければならない。
|
||
-
InputIt
の値型はエンコードされた文字型(
char
、
wchar_t
、
char16_t
、
char32_t
)のいずれかでなければならない。
|
||
-
CharT
はエンコードされた文字型(
char
、
wchar_t
、
char16_t
、
char32_t
)のいずれかでなければならない。
|
||
戻り値
* this
例外
メモリ確保に失敗した場合、 std:: bad_alloc をスローする可能性があります。
注記
append() や operator/= とは異なり、追加のディレクトリ区切り文字が導入されることは決してありません。
例
#include <filesystem> #include <iostream> #include <string> int main() { std::filesystem::path p1; // 空のパス p1 += "var"; // セパレータを挿入しない std::cout << R"("" + "var" --> )" << p1 << '\n'; p1 += "lib"; // セパレータを挿入しない 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'; }
出力:
"" + "var" --> "var" "var" + "lib" --> "varlib" p1.concat --> "varlib456"
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 3055 | C++17 | 単一文字の連結仕様が不適格であった | 適切な形式に修正 |
| LWG 3244 | C++17 |
Source
が
path
であってはならないという制約が欠落していた
|
追加済み |
関連項目
|
ディレクトリ区切り文字を使用してパスに要素を追加する
(公開メンバ関数) |
|
|
(C++17)
|
ディレクトリ区切り文字を使用して2つのパスを連結する
(関数) |