public member function
<string>

std::basic_string::find_last_of

string (1)
size_type find_last_of (const basic_string& str, size_type pos = npos) const;
c-string (2)
size_type find_last_of (const charT* s, size_type pos = npos) const;
buffer (3)
size_type find_last_of (const charT* s, size_type pos, size_type n) const;
character (4)
size_type find_last_of (charT c, size_type pos = npos) const;
string (1)
size_type find_last_of (const basic_string& str, size_type pos = npos) const noexcept;
c-string (2)
size_type find_last_of (const charT* s, size_type pos = npos) const;
buffer (3)
size_type find_last_of (const charT* s, size_type pos, size_type n) const;
character (4)
size_type find_last_of (charT c, size_type pos = npos) const noexcept;
Find character in string from the end
Searches the basic_string for the last character that matches any of the characters specified in its arguments.

When pos is specified, the search only includes characters at or before position pos, ignoring any possible occurrences after pos.

The function uses traits_type::eq to determine character equivalences.

Parameters

str
Another basic_string with the characters to search for.
pos
Position of the last character in the string to be considered in the search.
Any value greater or equal than the string length (including basic_string::npos) means that the entire string is searched.
Note: The first character is denoted by a value of 0 (not 1).
s
Pointer to an array of characters.
If argument n is specified (3), the first n characters in the array are searched for.
Otherwise (2), a null-terminated sequence is expected: the length of the sequence with the characters to match is determined by the first occurrence of a null character.
n
Number of character values to search for.
c
Individual character to be searched for.

charT is basic_string's character type (i.e., its first template parameter).
Member type size_type is an unsigned integral type.

Return Value

The position of the last character that matches.
If no matches are found, the function returns basic_string::npos.

Member type size_type is an unsigned integral type.

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// string::find_last_of
#include <iostream>
#include <string>

void SplitFilename (const std::string& str)
{
  std::cout << "Splitting: " << str << '\n';
  std::string::size_type found = str.find_last_of("/\\");
  std::cout << " path: " << str.substr(0,found) << '\n';
  std::cout << " file: " << str.substr(found+1) << '\n';
}

int main ()
{
  std::string str1 ("/usr/bin/man");
  std::string str2 ("c:\\windows\\winhelp.exe");

  SplitFilename (str1);
  SplitFilename (str2);

  return 0;
}

Splitting: /usr/bin/man
 path: /usr/bin
 file: man
Splitting: c:\windows\winhelp.exe
 path: c:\windows
 file: winhelp.exe


Complexity

Unspecified, but generally up to linear in the string length (or pos) times the number of characters to match (worst case).

Iterator validity

No changes.

Data races

The object is accessed.

Exception safety

If s does not point to an array long enough, it causes undefined behavior.
Otherwise, the function never throws exceptions (no-throw guarantee).

See also