std::filesystem::path:: append, std::filesystem::path:: operator/=
|
path
&
operator
/
=
(
const
path
&
p
)
;
|
(1) | (C++17부터) |
|
template
<
class
Source
>
path & operator / = ( const Source & source ) ; |
(2) | (C++17부터) |
|
template
<
class
Source
>
path & append ( const Source & source ) ; |
(3) | (C++17부터) |
|
template
<
class
InputIt
>
path & append ( InputIt first, InputIt last ) ; |
(4) | (C++17부터) |
path::preferred_separator
를
*
this
의 일반 형식에 추가합니다.
// "//host"가 루트 이름인 경우 path("//host") / "foo" // 결과는 "//host/foo" (구분자와 함께 추가) path("//host/") / "foo" // 결과 또한 "//host/foo" (구분자 없이 추가) // POSIX에서, path("foo") / "" // 결과는 "foo/" (추가) path("foo") / "/bar"; // 결과는 "/bar" (대체) // Windows에서, path("foo") / "C:/bar"; // 결과는 "C:/bar" (대체) path("foo") / "C:"; // 결과는 "C:" (대체) path("C:") / ""; // 결과는 "C:" (구분자 없이 추가) path("C:foo") / "/bar"; // 결과 "C:/bar" (상대 경로 제거 후 추가) path("C:foo") / "C:bar"; // 결과 "C:foo/bar" (p의 루트 이름을 생략하고 추가)
(2)
및
(3)
은 다음 조건이 충족될 때에만 오버로드 해결에 참여합니다:
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 | - | 추가할 경로명 |
| source | - | std::basic_string , std::basic_string_view , 널 종료 다중 문자 문자열, 또는 널 종료 다중 문자 시퀀스를 가리키는 입력 반복자 (휴대용 형식이나 기본 형식의 경로명을 나타냄) |
| first, last | - | 경로명을 나타내는 다중 문자 시퀀스를 지정하는 LegacyInputIterator s 쌍 |
| 타입 요구사항 | ||
-
InputIt
는
LegacyInputIterator
요구사항을 충족해야 함.
|
||
-
InputIt
의 값 타입은 인코딩된 문자 타입 중 하나여야 함 (
char
,
wchar_t
,
char16_t
및
char32_t
).
|
||
반환값
* this
예외
메모리 할당이 실패할 경우 std:: bad_alloc 을 던질 수 있습니다.
참고 사항
이 함수들은 p 인자 경로의 의미를 효과적으로 근사화하며, 여기서 * this 가 시작 디렉토리인 환경에서 동작합니다.
예제
출력은 Windows에서 생성됩니다.
#include <filesystem> #include <iostream> namespace fs = std::filesystem; int main() { fs::path p1 = "C:"; p1 /= "Users"; // does not insert a separator std::cout << "\"C:\" / \"Users\" == " << p1 << '\n'; p1 /= "batman"; // inserts fs::path::preferred_separator, '\' on Windows std::cout << "\"C:\" / \"Users\" / \"batman\" == " << p1 << '\n'; }
가능한 출력:
"C:" / "Users" == "C:Users" "C:" / "Users" / "batman" == "C:Users\\batman"
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 3244 | C++17 |
Source
가
path
가 될 수 없다는 제약 조건이 누락됨
|
추가됨 |
참고 항목
|
디렉토리 구분자를 추가하지 않고 두 경로를 연결합니다
(public member function) |
|
|
(C++17)
|
디렉토리 구분자와 함께 두 경로를 연결합니다
(function) |