public member function
<string>
std::string::find_last_of
string (1) | size_t find_last_of (const string& str, size_t pos = npos) const; |
---|
c-string (2) | size_t find_last_of (const char* s, size_t pos = npos) const; |
---|
buffer (3) | size_t find_last_of (const char* s, size_t pos, size_t n) const; |
---|
character (4) | size_t find_last_of (char c, size_t pos = npos) const; |
---|
string (1) | size_t find_last_of (const string& str, size_t pos = npos) const noexcept; |
---|
c-string (2) | size_t find_last_of (const char* s, size_t pos = npos) const; |
---|
buffer (3) | size_t find_last_of (const char* s, size_t pos, size_t n) const; |
---|
character (4) | size_t find_last_of (char c, size_t pos = npos) const noexcept; |
---|
Find character in string from the end
Searches the 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.
Parameters
- str
- Another 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 than, or equal to, the string length (including 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.
size_t is an unsigned integral type (the same as member type string::size_type).
Return Value
The position of the last character that matches.
If no matches are found, the function returns string::npos.
size_t is an unsigned integral type (the same as member type string::size_type).
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
// string::find_last_of
#include <iostream> // std::cout
#include <string> // std::string
#include <cstddef> // std::size_t
void SplitFilename (const std::string& str)
{
std::cout << "Splitting: " << str << '\n';
std::size_t 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).