Namespaces
Variants

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

From cppreference.net
std::basic_string
size_type find_last_of ( const basic_string & str,
size_type pos = npos ) const ;
(1) (noexcept начиная с C++11)
(constexpr начиная с C++20)
size_type find_last_of ( const CharT * s,
size_type pos, size_type count ) const ;
(2) (constexpr начиная с C++20)
size_type find_last_of ( const CharT * s, size_type pos = npos ) const ;
(3) (constexpr начиная с C++20)
size_type find_last_of ( CharT ch, size_type pos = npos ) const ;
(4) (noexcept начиная с C++11)
(constexpr начиная с C++20)
template < class StringViewLike >

size_type
find_last_of ( const StringViewLike & t,

size_type pos = npos ) const noexcept ( /* см. ниже */ ) ;
(5) (начиная с C++17)
(constexpr начиная с C++20)

Находит последний символ, равный одному из символов в заданной последовательности символов. Точный алгоритм поиска не указан. Поиск рассматривает только диапазон [ 0 , pos ] . Если ни один из символов в заданной последовательности символов не присутствует в диапазоне, npos будет возвращено.

1) Находит последний символ, равный одному из символов в str .
2) Находит последний символ, равный одному из символов в диапазоне [ s , s + count ) . Этот диапазон может включать нулевые символы.
Если [ s , s + count ) не является допустимым диапазоном , поведение не определено.
3) Находит последний символ, равный одному из символов в строке, на которую указывает s . Длина строки определяется по первому нулевому символу с помощью Traits :: length ( s ) .
Если [ s , s + Traits :: length ( s ) ) не является допустимым диапазоном , поведение не определено.
4) Находит последний символ, равный ch .
5) Неявно преобразует t в строковое представление sv как если бы с помощью std:: basic_string_view < CharT, Traits > sv = t ; , затем находит последний символ, равный одному из символов в sv .
Эта перегрузка участвует в разрешении перегрузки только если std:: is_convertible_v < const StringViewLike & ,
std:: basic_string_view < CharT, Traits >>
равно true и std:: is_convertible_v < const StringViewLike & , const CharT * > равно false .

Во всех случаях равенство проверяется вызовом Traits::eq .

Содержание

Параметры

str - строка, определяющая символы для поиска
pos - позиция, на которой должен завершиться поиск
count - длина строки символов, определяющей символы для поиска
s - указатель на строку символов, определяющую символы для поиска
ch - символ для поиска
t - объект (преобразуемый в std::basic_string_view ), определяющий символы для поиска

Возвращаемое значение

Позиция найденного символа или npos если такой символ не найден.

Исключения

1,4) Ничего не выбрасывает.
5)
noexcept спецификация:
noexcept ( std:: is_nothrow_convertible_v < const T & , std:: basic_string_view < CharT, Traits >> )

Если по какой-либо причине возникает исключение, эта функция не оказывает никакого эффекта ( гарантия строгой безопасности исключений ).

Пример

#include <iostream>
#include <string>
int main()
{
    const std::string path = "/root/config";
    auto const pos = path.find_last_of('/');
    const auto leaf = path.substr(pos + 1);
    std::cout << leaf << '\n';
}

Вывод:

config

Отчеты о дефектах

Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применяется к Поведение в опубликованной версии Корректное поведение
LWG 141 C++98 перегрузка (1) могла возвращать только npos если pos >= size ( ) диапазон поиска составляет
[ 0 , size ( ) ) в этом случае
LWG 847 C++98 не было гарантии безопасности исключений добавлена строгая гарантия безопасности исключений
LWG 2064 C++11 перегрузки (3,4) были noexcept удалено
LWG 2946 C++17 перегрузка (5) вызывала неоднозначность в некоторых случаях устранено путем превращения в шаблон
P1148R0 C++11
C++17
noexcept для перегрузок (4,5) были
случайно удалены LWG2064/LWG2946
восстановлено

Смотрите также

находит первое вхождение заданной подстроки
(public member function)
находит последнее вхождение подстроки
(public member function)
находит первое вхождение символов
(public member function)
находит первое отсутствие символов
(public member function)
находит последнее отсутствие символов
(public member function)
находит последнее вхождение символов
(public member function of std::basic_string_view<CharT,Traits> )