home | help
std::filesy...::extension(3)   C++ Standard Libary  std::filesy...::extension(3)

NAME
     std::filesystem::path::extension - std::filesystem::path::extension

Synopsis
	path extension() const;  (since C++17)

	Returns  the  extension  of the filename component of the generic-format
     view of *this.

	If the filename() component of the generic-format path contains a period
     (.), and is
	not one of the special filesystem elements dot or dot-dot, then the  ex-
     tension is the
	substring  beginning  at the rightmost period (including the period) and
     until the end
	of the pathname.

	If the first character in the filename is a period, that period  is  ig-
     nored (a
	filename like ".profile" is not treated as an extension).

	If the pathname is either . or .., or if filename() does not contain the
     '.'
	character, then empty path is returned.

	Additional  behavior may be defined by the implementations for file sys-
     tems which
	append additional elements (such as alternate  data  streams  or  parti-
     tioned dataset
	names) to extensions.

Parameters
	(none)

Return value
	The extension of the current pathname or an empty path if there's no ex-
     tension.

Exceptions
	May throw implementation-defined exceptions.

Notes
	The  extension as returned by this function includes a period to make it
     possible to
	distinguish the file that ends with a period (function returns ".") from
     a file with
	no extension (function returns "").

	On a non-POSIX system, it is possible that p.stem() +  p.extension()  !=
     p.filename()
	even though generic-format versions are the same.

Example
     // Run this code

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

      int main()
      {
	  std::cout << fs::path("/foo/bar.txt").extension() << '\n'
		    << fs::path("/foo/bar.").extension() << '\n'
		    << fs::path("/foo/bar").extension() << '\n'
		    << fs::path("/foo/bar.txt/bar.cc").extension() << '\n'
		    << fs::path("/foo/bar.txt/bar.").extension() << '\n'
		    << fs::path("/foo/bar.txt/bar").extension() << '\n'
		    << fs::path("/foo/.").extension() << '\n'
		    << fs::path("/foo/..").extension() << '\n'
		    << fs::path("/foo/.hidden").extension() << '\n'
		    << fs::path("/foo/..bar").extension() << '\n';
      }

Output:
      ".txt"
      "."
      ""
      ".cc"
      "."
      ""
      ""
      ""
      ""
      ".bar"

See also
	filename	  returns the filename path component
			  (public member function)
			  returns  the stem path component (filename without the
     final
	stem		  extension)
			  (public member function)
	replace_extension replaces the extension
			  (public member function)
	has_extension	  checks if the corresponding path element is not empty
			  (public member function)

http://cppreference.com 	   2024.06.10	    std::filesy...::extension(3)

home | help