std::experi...th::concat,(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸ’… std::experi...th::concat,(3) πŸ’…

okay bestie, welcome to the C++ Standard Libary manual page for std::experimental::filesystem::path::concat β€” yes, the header spells it C++ Standard Libary, and yes, I’m keeping it exactly like that. This whole page is filesystem TS energy, so every overload below is tagged that way. Let’s go, no cap. ✨


🌸 NAME 🌸

  • std::experimental::filesystem::path::concat, β€” the NAME block literally lists std::experimental::filesystem::path::concat, - and then std::experimental::filesystem::path::concat, again. It’s giving β€œconcat page, concat title, concat everything”, periodt.

✨ Synopsis ✨

path& operator+=( const path& p );                       (1)
(filesystem TS)
path& operator+=( const string_type& str );              (2)
(filesystem TS)
path& operator+=( const value_type* ptr );               (3)
(filesystem TS)
path& operator+=( value_type x );                        (4)
(filesystem TS)
template< class Source >                                 (5)
(filesystem TS)
path& operator+=( const Source& source );
template< class CharT >                                  (6)
(filesystem TS)
path& operator+=( CharT x );
template< class Source >                                 (7)
(filesystem TS)
path& concat( const Source& source );
template< class InputIt >                                (8)
(filesystem TS)
path& concat( InputIterator first, InputIterator last );

Concatenates the current path and the argument. 🫢

  1. Concatenates *this and p in such a way that native() of the result is exactly original native() concatenated with p.native().
  2. Same as (1), except the resulting native() is a concatenation of the original native() and the string str.
  3. Same as (1), except the resulting native() is a concatenation of the original native() and the null-terminated string whose first character is pointed to by ptr.
  4. Same as (1), except the resulting native() is a concatenation of the original native() and the single character x.
  5. Same as (1), except the resulting native() is a concatenation of the original native() and the sequence (which may be in portable or native format) represented by source, which may be std::basic_string, null-terminated multicharacter string, or an input iterator pointing to a null-terminated multicharacter sequence.
  6. Same as (4), except that character conversion may be performed.
  7. Same as (5).
  8. Same as (5), except that the sequence is represented by any iterator pair that designates a multicharacter string.

πŸŽ€ Parameters πŸŽ€

  • p β€” path to append.
  • str β€” string to append.
  • ptr β€” pointer to the beginning of a null-terminated string to append.
  • x β€” single character to append.
  • source β€” std::basic_string, null-terminated multicharacter string, or an input iterator pointing to a null-terminated multicharacter sequence, which represents a path name (either in portable or in native format).
  • first, last β€” pair of LegacyInputIterators that specify a multicharacter sequence that represents a path name.

🧚 Type requirements 🧚

  • InputIt must meet the requirements of LegacyInputIterator.
  • The value type of InputIt must be one of the encoded character types (char, wchar_t, char16_t and char32_t).
  • CharT must be one of the encoded character types (char, wchar_t, char16_t and char32_t).

πŸ‘‘ Return value πŸ‘‘

*this β€” that’s the whole return value, bestie. Iconic. πŸ’…


πŸ’€ Exceptions πŸ’€

May throw filesystem_error on underlying OS API errors or std::bad_alloc if memory allocation fails. So yeah, keep an eye out. 😭


πŸ¦‹ Notes πŸ¦‹

Unlike with append() or operator/=, additional directory separators are never introduced. That’s the whole vibe: concat does not sneak a / in there. Periodt. πŸ”₯


πŸ“ Example πŸ“

// Run this code

#include <experimental/filesystem>
#include <iostream>
namespace fs = std::experimental::filesystem;

int main()
{
    fs::path p1; // empty path
    p1 += "var"; // does not insert a separator
    std::cout << "\"\" + \"var\" == " << p1 << '\n';
    p1 += "lib"; // does not insert a separator
    std::cout << "\"\" + \"var\" + \"lib\" == " << p1 << '\n';
}

πŸŽ€ Output πŸŽ€

"" + "var" == "var"
"" + "var" + "lib" == "varlib"

🌈 See also 🌈

  • append β€” appends elements to the path.
  • operator/= β€” (public member function).
  • operator/ β€” concatenates two paths with a directory separator (function).

🏷️ Category 🏷️

  • * Noindexed pages

🫢 that’s the whole page, bestie. Footer check: source is http://cppreference.com, version/date is 2024.06.10, and the footer repeats std::experi...th::concat,(3). Bye! πŸ’–

πŸ“¦ where this page comes from