std::basic_string::find
From cppreference.com
                    
                                        
                    < cpp | string | basic string
                    
                                                            
                    |   size_type find( const basic_string& str, size_type pos = 0 ) const  | 
(1) | |
|   size_type find( const CharT* s, size_type pos, size_type count ) const;  | 
(2) | |
|   size_type find( const CharT* s, size_type pos = 0 ) const;  | 
(3) | |
|   size_type find( CharT ch, size_type pos = 0 ) const;  | 
(4) | |
|   size_type find( std::basic_string_view<CharT, Traits> sv, size_type pos = 0) const  | 
(5) | (since C++17) | 
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 as if by find(std::basic_string_view<CharT, Traits>(str), pos) (since C++17)2) Finds the first substring equal to the first 
count characters of the character string pointed to by s. s can include null characters. as if by find(std::basic_string_view<CharT, Traits>(s,count),pos) (since C++17)3) Finds the first substring equal to the character string pointed to by 
s as if by find(std::basic_string_view<CharT, Traits>(s), pos) (since C++17). The length of the string is determined by the first null character. 4) Finds the first character 
ch (treated as a single-character substring by the formal rules below).5) Finds the first substring equal to the string view 
sv.Formally, a substring str is said to be found at position xpos if all of the following is true:
- xpos >= pos
 - xpos + str.size() <= size()
 -  for all positions 
ninstr, 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 
posif and only if pos <= size() - for a non-empty substring, if pos >= size(), the function always returns npos.
 
Contents | 
[edit] 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 | 
| sv | - | std::basic_string_view to search for | 
[edit] Return value
Position of the first character of the found substring or npos if no such substring is found.
[edit] Exceptions
| 
 1-4) (none)
  | 
(until C++11) | 
| 
 1,4)  
noexcept specification:   noexcept   2,3) (none)
  | 
(since C++11) (until C++14)  | 
| 
 1)  
noexcept specification:   noexcept   2,3,4) (none)
  | 
(since C++14) | 
| 
 5)  noexcept specification:   
noexcept    | 
(since C++17) | 
[edit] Example
Run this code
#include <string> #include <iostream> void print(std::string::size_type n, std::string const &s) { if (n == std::string::npos) { std::cout << "not found\n"; } else { std::cout << "found: " << s.substr(n) << '\n'; } } int main() { std::string::size_type n; std::string const s = "This is a string"; // search from beginning of string n = s.find("is"); print(n, s); // search from position 5 n = s.find("is", 5); print(n, s); // find a single character n = s.find('a'); print(n, s); // find a single character n = s.find('q'); print(n, s); }
Output:
found: is is a string found: is a string found: a string not found
[edit] See also
|    finds the first occurrence of a substring of characters  (function)  | |
|    finds the first occurrence of a wide string within another wide string  (function)  | |
|    finds the first occurrence of a character  (function)  | |
|    finds the first occurrence of a wide character in a wide string  (function)  | |
|    find the last occurrence of a substring  (public member function)  | |
|    find first occurrence of characters  (public member function)  | |
|    find first absence of characters  (public member function)  | |
|    find last occurrence of characters  (public member function)  | |
|    find last absence of characters  (public member function)  | |
|    searches for a range of elements   (function template)  |