Namespaces
Variants
Views
Actions

std::basic_string::find

From cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::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 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.

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

#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) [edit]
finds the first occurrence of a wide string within another wide string
(function) [edit]
finds the first occurrence of a character
(function) [edit]
finds the first occurrence of a wide character in a wide string
(function) [edit]
find the last occurrence of a substring
(public member function) [edit]
find first occurrence of characters
(public member function) [edit]
find first absence of characters
(public member function) [edit]
find last occurrence of characters
(public member function) [edit]
find last absence of characters
(public member function) [edit]
searches for a range of elements
(function template) [edit]