[#BloombergLP-bdls-PathUtil-splitFilename]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bdls.adoc[bdls]::xref:BloombergLP/bdls/PathUtil.adoc[PathUtil]::splitFilename
:relfileprefix: ../../../
:mrdocs:

Load the last pathname component from the specified `path` into the specified `tail` and everything leading up to that to the specified `head`&period; If the optionally specified `rootEnd` offset is non&hyphen;negative, it is taken as the position in `path` of the character following the root&period; The `tail` part never contains a slash&semi; if `path` ends in a slash, `tail` is empty&period; If there is no slash in `path`, `head` is empty&period; If `path` is empty, both `head` and `tail` are empty&period; Trailing slashes are stripped from `head` unless it is the root&period; &grave; &plus;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&plus;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&plus;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&plus; &verbar; PATH &verbar; HEAD &verbar; TAIL &verbar; &plus;#&plus;&plus;#&equals;&equals;&equals;&plus; &verbar; &quot;one&quot; &verbar; &quot;&quot; &verbar; &quot;one&quot; &verbar; &plus;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&plus;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&plus;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&plus; &verbar; &quot;&sol;one&sol;two&sol;three&quot; &verbar; &quot;&sol;one&sol;two&quot; &verbar; &quot;three&quot; &verbar; &plus;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&plus;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&plus;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&plus; &verbar; &quot;&sol;&sol;one&sol;two&sol;&sol;&sol;&quot; &verbar; &quot;&sol;one&sol;two&quot; &verbar; &quot;&quot; &verbar; &plus;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&plus;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&plus;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&plus; &verbar; &quot;c&colon;&bsol;one&bsol;two&quot; &verbar; &quot;c&colon;&bsol;one&quot; &verbar; &quot;two&quot; &verbar; &plus;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&plus;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&plus;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&plus; &grave; See &lcub;`Terminology`&rcub; for the definition of root&period; The behavior is undefined unless `head !&equals; tail` and `INT&lowbar;MAX &gt;&equals; path&period;length()`&period; Note that `head` or `tail` may point to the `path` object when the method is called&period;

== Synopsis

Declared in `&lt;bdls&lowbar;pathutil&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
static
void
splitFilename(
    std::string&lowbar;view* head,
    std::string&lowbar;view* tail,
    std::string&lowbar;view const& path,
    int rootEnd = &hyphen;1);
----


[.small]#Created with https://www.mrdocs.com[MrDocs]#
