home | help
std::basic_...nd_first_of(3)   C++ Standard Libary  std::basic_...nd_first_of(3)

NAME
     std::basic_string::find_first_of - std::basic_string::find_first_of

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

	size_type							  (since
     C++17)
	    find_first_of( const StringViewLike& t,		 (5)  (constexpr
     since C++20)

			   size_type pos = 0 ) const noexcept(/*
	see below */);

	Finds  the  first  character equal to one of the characters in the given
     character
	sequence. The search considers only the range [pos, size()). If none  of
     the
	characters in the given character sequence is present in the range, npos
     will be
	returned.

	1) Finds the first character equal to one of the characters in str.
	2) Finds the first character equal to one of the characters in 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 first character equal to one of the characters in 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  un-
     defined.
	4) Finds the first 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 first character  equal	to  one  of  the
     characters in
	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.

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

Return value
	Position of the found character or npos if no such character 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 effect
     (strong
	exception safety guarantee).

Notes
	Traits::eq() is used to perform the comparison.

Example
     // Run this code

      #include <cassert>
      #include <iostream>
      #include <string>
      #include <string_view>

      int main()
      {
	  using namespace std::literals;
	  std::string::size_type sz;

	  // (1)
	  sz = "alignas"s.find_first_of("klmn"s);
	  //	 aaaaaaaaaaaaaaaaaaaaaaaaaa
	  assert(sz == 1);

	  sz = "alignof"s.find_first_of("wxyz"s);
	  // no match
	  assert(sz == std::string::npos);

	  // (2)
	  sz = "consteval"s.find_first_of("xyzabc", 0, 3);
	  // no match (A are not targets)     AAA
	  assert(sz == std::string::npos);

	  sz = "consteval"s.find_first_of("xyzabc", 0, 6);
	  //	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
	  assert(sz == 0);

	  // (3)
	  sz = "decltype"s.find_first_of("xyzabc");
	  //	  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
	  assert(sz == 2);

	  // (4)
	  sz = "co_await"s.find_first_of('a');
	  //	   aaaaaaaaaaaaaaaaaaaaaaaa
	  assert(sz == 3);

	  // (5)
	  sz = "constinit"s.find_first_of("int"sv);
	  //	  aaaaaaaaaaaaaaaaaaaaaaaaaaa
	  assert(sz == 2);

	  std::cout << "All tests passed.\n";
      }

Output:
      All tests passed.

	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	      removed
	LWG 2946 C++17	    overload (5) caused ambiguity in some     avoided by
     making it a
			    cases				      template
	P1148R0  C++11	    noexcept for overloads (4,5) were	      restored
		 C++17	    accidentally dropped by LWG2064/LWG2946

See also
	find		  finds the first occurrence of the given substring
			  (public member function)
	rfind		  find the last occurrence of a substring
			  (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 first occurrence of characters
	find_first_of	     (public	 member     function	 of	std::ba-
     sic_string_view<CharT,Traits>)

			  returns the length of the maximum initial segment that
     consists
	strspn		  of only the characters found in another byte string
			  (function)

Category:
	  * conditionally noexcept

http://cppreference.com 	   2024.06.10	    std::basic_...nd_first_of(3)

home | help