Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::experi...th::compare(3)  C++ Standard Libary std::experi...th::compare(3)

NAME
       std::experimental::filesystem::path::compare	 -     std::experimen-
       tal::filesystem::path::compare

Synopsis
	  int compare( const path& p ) const noexcept; (1) (filesystem TS)
	  int compare( const string_type& str )	const; (2) (filesystem TS)
	  int compare( const value_type* s ) const;    (3) (filesystem TS)

	  Compares the lexical representations of the path and another path.

	  1) Returns a value less than,	equal to or greater than 0 if the  na-
       tive
	  representation  of the path (native()) is respectively lexicographi-
       cally less than,
	  equal	to or greater than  the	 native	 representation	 of  p	(p.na-
       tive()).	Comparison is
	  performed  element-wise,  as if by iterating both paths from begin()
       to end().
	  2) Equivalent	to compare(path(str)).
	  3) Equivalent	to compare(path(s)).

Parameters
	  p   -	a path to compare to
	  str -	a string representing path to compare to
	  s   -	a null-terminated string representing path to compare to

Return value
	  A value less than 0 if the path is lexicographically less  than  the
       given path.

	  A  value  equal  to  0 if the	path is	lexicographically equal	to the
       given path.

	  A value greater than 0 if the	path is	lexicographically greater than
       the given path.

Exceptions
	  2-3) May throw implementation-defined	exceptions.

Notes
	  For two-way comparisons, binary operators may	be more	suitable.

Example
       // Run this code

	#include <iostream>
	#include <experimental/filesystem>
	namespace fs = std::experimental::filesystem;
	void demo(int rc, fs::path p1, fs::path	p2) {
	    if(rc < 0) std::cout << p1 << " < "	<< p2 << '\n';
	    else if(rc > 0) std::cout << p1 << " > "  << p2 << '\n';
	    else if(rc == 0) std::cout << p1 <<	"==" <<	p2 << '\n';
	}
	int main() {
	    fs::path p1	= "/a/b/"; // as if "a/b/." for	lexicographical	itera-
       tion
	    fs::path p2	= "/a/b/#";
	    demo(p1.compare(p2), p1, p2);
	    demo(p1.compare("a/b/_"), p1, "a/b/_");
	}

Output:
	"/a/b/"	> "/a/b/#"
	"/a/b/"	< "a/b/_"

See also
	  operator==
	  operator!=
	  operator<  lexicographically compares	two paths
	  operator<= (function)
	  operator>
	  operator>=

http://cppreference.com		  2022.07.31	  std::experi...th::compare(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::experimental::filesystem::path::compare&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help