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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::basic_string::find - std::basic_string::find

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

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

	  Finds	the first substring equal to  the  given  character  sequence.
       Search begins at
	  pos, i.e. the	found substring	must not begin in a position preceding
       pos.

	  1) Finds the first substring equal to	str.
	  2) Finds the first substring equal to	the range [s, s	+ count). This
       range may
	  contain null characters.
	  If [s, s + count) is not a valid range, the behavior is undefined.
	  3)  Finds  the first 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	first character	ch (treated as a single-character sub-
       string by the
	  formal rules below).
	  5) Implicitly	converts t to a	string	view  sv  as  if  by  std::ba-
       sic_string_view<CharT,
	  Traits> sv = t;, then	finds the first	substring equal	to 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.

	  Formally,  a	substring  str is said to be found at position xpos if
       all of the
	  following are	true:

	    * xpos >= pos
	    * xpos + str.size()	<= size()
	    * for all positions	n in str, Traits::eq(at(xpos + n), str.at(n)).

	  In particular, this implies that

	    * a	substring can be found only if pos <= size() - str.size()
	    * an empty substring is found at pos if and	only if	pos <= size()
	    * for a non-empty substring, if pos	>= size(), the function	always
       returns npos.

Parameters
	  str	- string to search for
	  pos	- position at which to start the search
	  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.

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(int id, std::string::size_type n, std::string const&	s)
	{
	    std::cout << id << ") ";
	    if (std::string::npos == n)
		std::cout << "not found! n == npos\n";
	    else
		std::cout << "found @ n	= " << n << ", substr("	<< n <<	") = "
			  << std::quoted(s.substr(n)) << '\n';
	}

	int main()
	{
	    std::string::size_type n;
	    std::string	const s	= "This	is a string"; /*
				     ^	^  ^
				     1	2  3	      */

	    // search from beginning of	string
	    n =	s.find("is");
	    print(1, n,	s);

	    // search from position 5
	    n =	s.find("is", 5);
	    print(2, n,	s);

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

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

Output:
	1) found @ n = 2, substr(2) = "is is a string"
	2) found @ n = 5, substr(5) = "is a string"
	3) found @ n = 8, substr(8) = "a string"
	4) not found! n	== npos

	  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
	  strstr	    finds the first occurrence of a substring of char-
       acters
			    (function)
			    finds the first occurrence of a wide string	within
       another wide
	  wcsstr	    string
			    (function)
	  strchr	    finds the first occurrence of a character
			    (function)
	  wcschr	    finds the first occurrence of a wide character  in
       a wide string
			    (function)
	  rfind		    find the last occurrence of	a 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 characters in the view
	  find		       (public	  member    function	of    std::ba-
       sic_string_view<CharT,Traits>)

	  search	    searches for a range of elements
			    (function template)

Category:
	    * conditionally noexcept

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

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

home | help