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

FreeBSD Manual Pages

  
 
  

home | help
std::basic_string::rfind(3)   C++ Standard Libary  std::basic_string::rfind(3)

NAME
       std::basic_string::rfind	- std::basic_string::rfind

Synopsis
	  size_type  rfind( const basic_string&	str, size_type pos  (1)	(noex-
       cept since C++11)
	  = npos ) const;					       (const-
       expr since C++20)
	  size_type rfind( const CharT*	s, size_type pos,	   (2) (const-
       expr since C++20)
	  size_type count ) const;
	  size_type rfind( const CharT*	s, size_type pos = npos	)  (3) (const-
       expr since C++20)
	  const;
	  size_type rfind( CharT ch, size_type pos = npos ) const; (4)	(noex-
       cept since C++11)
								       (const-
       expr since C++20)
	  template< class StringViewLike >

	  size_type  rfind( const StringViewLike& t,		    (5)	(since
       C++17)
								       (const-
       expr since C++20)
			   size_type pos = npos	) const
	  noexcept(/* see below	*/);

	  Finds	the last substring that	is equal to the	 given	character  se-
       quence. The search
	  begins  at pos and proceeds from right to left (thus,	the found sub-
       string, if any,
	  cannot begin in a position following pos). If	npos or	any value  not
       smaller than
	  size() - 1 is	passed as pos, the whole string	will be	searched.

	  1) Finds the last substring equal to str.
	  2)  Finds the	last substring equal to	the range [s, s	+ count). This
       range can
	  include null characters.
	  If [s, s + count) is not a valid range, the behavior is undefined.
	  3) Finds the last substring equal to the character string pointed to
       by s. The
	  length of the	string is determined by	the first null character using
	  Traits::length(s).
	  If [s, s + Traits::length(s))	is not a valid range, the behavior  is
       undefined.
	  4) Finds the last character equal to ch.
	  5)  Implicitly  converts  t  to  a  string view sv as	if by std::ba-
       sic_string_view<CharT,
	  Traits> sv = t;, then	finds the last substring equal to the contents
       of sv.
	  This overload	participates in	overload resolution only if
	  std::is_convertible_v<const StringViewLike&,
				std::basic_string_view<CharT, Traits>> is true
       and
	  std::is_convertible_v<const StringViewLike&, const CharT*> is	false.

	  In all cases,	equality is checked by calling Traits::eq.

Parameters
	  str	- string to search for
	  pos	- position at which to begin searching
	  count	- length of substring to search	for
	  s	- pointer to a character string	to search for
	  ch	- character to search for
	  t	- object (convertible to std::basic_string_view) to search for

Return value
	  Position of the first	character of the found substring or npos if no
       such substring
	  is found. Note that this is an offset	from the start of the  string,
       not the end.

	  If  searching	 for  an  empty	 string	 (i.e.,	 str.size(), count, or
       Traits::length(s) is
	  zero), the empty string is found immediately and rfind returns:

	    * pos, if pos < size();
	    * size() otherwise,	including the case where pos ==	npos.

	  Otherwise, if	size() is zero,	npos is	always returned.

Exceptions
	  1,4) Throws nothing.
	  5)
	  noexcept specification:
	  noexcept(std::is_nothrow_convertible_v<const	    T&,	      std::ba-
       sic_string_view<CharT,
	  Traits>>)

	  If  an  exception is thrown for any reason, this function has	no ef-
       fect (strong
	  exception safety guarantee).

Example
       // Run this code

	#include <iomanip>
	#include <iostream>
	#include <string>

	void print(std::string::size_type n,
		   std::string::size_type len,
		   std::string const &s)
	{
	    if (n == std::string::npos)
		std::cout << "not found\n";
	    else
		std::cout << "found: " << std::quoted(s.substr(n, len))	 <<  "
       at " << n << '\n';
	}

	int main()
	{
	    std::string::size_type n;
	    std::string	const s	= "This	is a string";

	    // search backwards	from end of string
	    n =	s.rfind("is");
	    print(n, 2,	s);

	    // search backwards	from position 4
	    n =	s.rfind("is", 4);
	    print(n, 2,	s);

	    // find a single character
	    n =	s.rfind('s');
	    print(n, 1,	s);

	    // find a single character
	    n =	s.rfind('q');
	    print(n, 1,	s);

	    // find the	prefix (see also s.starts_with("This"))
	    n =	s.rfind("This",	0);
	    print(n, 4,	s);
	}

Output:
	found: "is" at 5
	found: "is" at 2
	found: "s" at 10
	not found
	found: "This" at 0

	  Defect reports

	  The following	behavior-changing defect reports were applied retroac-
       tively to
	  previously published C++ standards.

	     DR	       Applied	   to		   Behavior    as    published
       Correct behavior
	  LWG 847  C++98      there was	no exception safety guarantee	 added
       strong exception
									safety
       guarantee
	  LWG  2064  C++11	 overloads (3,4) were noexcept		   re-
       moved
	  LWG  2946  C++17	 overload  (5)	caused	 ambiguity   in	  some
       avoided by making it a
			      cases					  tem-
       plate
	  P1148R0  C++11      noexcept for overloads  (4,5)  were	   re-
       stored
		   C++17      accidently dropped by LWG2064/LWG2946

See also
	  find		    finds the first occurrence of the given substring
			    (public member function)
	  find_first_of	    find first occurrence of characters
			    (public member function)
	  find_first_not_of find first absence of characters
			    (public member function)
	  find_last_of	    find last occurrence of characters
			    (public member function)
	  find_last_not_of  find last absence of characters
			    (public member function)
			    find the last occurrence of	a substring
	  rfind		       (public	  member    function	of    std::ba-
       sic_string_view<CharT,Traits>)

Category:
	    * conditionally noexcept

http://cppreference.com		  2024.06.10	   std::basic_string::rfind(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::basic_string::rfind&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help