| Member types | ||||||
| Member constants | ||||||
| Member functions | ||||||
| Path decomposition | ||||||
| Non-member functions | ||||||
| ||||||
| Helper classes | ||||||
friend path operator/(const path& lhs,const path& rhs); | (since C++17) | |
Concatenates two path components using the preferred directory separator if appropriate (seeoperator/= for details).
Effectively returnspath(lhs)/= rhs.
This function is not visible to ordinaryunqualified orqualified lookup, and can only be found byargument-dependent lookup when std::filesystem::path is an associated class of the arguments. This prevents undesirable conversions in the presence of ausingnamespace std::filesystem;using-directive.
Contents |
| lhs, rhs | - | paths to concatenate |
The result of path concatenation.
#include <filesystem>#include <iostream> int main(){# if defined(_WIN32) // see e.g. stackoverflow.com/questions/142508 std::filesystem::path p="C:"; std::cout<< R"("C:\" / "Users" / "batman" == )"<< p/"Users"/"batman"<<'\n'; # else // __linux__ etc std::filesystem::path p="/home"; std::cout<< R"("/home" / "tux" / ".fonts" ==)"<< p/"tux"/".fonts"<<'\n'; # endif}
Possible output:
Windows specific output:"C:" / "Users" / "batman" == "C:Users\\batman" Linux etc specific output:"/home" / "tux" / ".fonts" == "/home/tux/.fonts"
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3065 | C++17 | allowed concatenating everything convertible topath in the presence of ausing-directive | made hidden friend |
| appends elements to the path with a directory separator (public member function)[edit] |