std::basic_string<CharT,Traits,Allocator>::find

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.

# Declarations

size_type find( const basic_string& str, size_type pos = 0 ) const;

(noexcept since C++11) (constexpr since C++20)

size_type find( const CharT* s, size_type pos, size_type count ) const;

(constexpr since C++20)

size_type find( const CharT* s, size_type pos = 0 ) const;

(constexpr since C++20)

size_type find( CharT ch, size_type pos = 0 ) const;

(noexcept since C++11) (constexpr since C++20)

template< class StringViewLike >
size_type find( const StringViewLike& t,
size_type pos = 0 ) const noexcept(/* see below */);

(since C++17) (constexpr since C++20)

# Parameters

# Return value

Position of the first character of the found substring or npos if no such substring is found.

# Example

#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);
}

# Defect reports

DRApplied toBehavior as publishedCorrect behavior
LWG 847C++98there was no exception safety guaranteeadded strong exception safety guarantee
LWG 2064C++11overloads (3,4) were noexceptremoved
LWG 2946C++17overload (5) caused ambiguity in some casesavoided by making it a template
P1148R0C++11C++17noexcept for overloads (4,5) wereaccidently dropped by LWG2064/LWG2946restored

# See also