std::basic_string<CharT,Traits,Allocator>::find_last_of
提供: cppreference.com
< cpp | string | basic string
(1) | ||
size_type find_last_of( const basic_string& str, size_type pos = npos ) const; |
(C++11未満) | |
constexpr size_type find_last_of( const basic_string& str, size_type pos = npos ) const noexcept; |
(C++11以上) (C++20未満) |
|
(2) | ||
size_type find_last_of( const CharT* s, size_type pos, size_type count ) const; |
(C++11未満) | |
constexpr size_type find_last_of( const CharT* s, size_type pos, size_type count ) const; |
(C++11以上) | |
(3) | ||
size_type find_last_of( const CharT* s, size_type pos = npos ) const; |
(C++20未満) | |
constexpr size_type find_last_of( const CharT* s, size_type pos = npos ) const; |
(C++20以上) | |
(4) | ||
size_type find_last_of( CharT ch, size_type pos = npos ) const; |
(C++11未満) | |
size_type find_last_of( CharT ch, size_type pos = npos ) const noexcept; |
(C++11以上) (C++20未満) |
|
constexpr size_type find_last_of( CharT ch, size_type pos = npos ) const noexcept; |
(C++20以上) | |
(5) | ||
template < class T > size_type |
(C++17以上) (C++20未満) |
|
template < class T > constexpr size_type |
(C++20以上) | |
指定された文字シーケンス内の文字のいずれかと等しい最後の文字を探します。 正確な検索アルゴリズムは規定されていません。 検索は区間 [0; pos] のみが考慮されます。 区間内に文字がなければ、 npos が返されます。
1)
str
内の文字のいずれかと等しい最後の文字を探します。2) 範囲
[s, s+count)
内の文字のいずれかと等しい最後の文字を探します。 この範囲はヌル文字を含むことができます。3)
s
の指す文字列内の文字のいずれかと等しい最後の文字を探します。 文字列の長さは Traits::length(s)
. を用いて最初のヌル文字によって決定されます。4)
ch
と等しい最後の文字を探します。5) std::basic_string_view<CharT, Traits> sv = t; によって行われたかのように、
t
を文字列ビュー sv
に暗黙に変換し、 sv
内の文字のいずれかと等しい最後の文字を探します。 このオーバーロードは、std::is_convertible_v<const T&, std::basic_string_view<CharT, Traits>> が true であり、 std::is_convertible_v<const T&, const CharT*> が false である場合にのみ、オーバーロード解決に参加します。すべての場合において、等しさは Traits::eq を呼ぶことによって調べられます。
目次 |
[編集] 引数
str | - | 検索する文字を指定する文字列 |
pos | - | 検索を終える位置 |
count | - | 検索する文字を指定する文字列の長さ |
s | - | 検索する文字を指定する文字列を指すポインタ |
ch | - | 検索する文字 |
t | - | 検索する文字を指定する (std::basic_string_view に変換可能な) オブジェクト |
[編集] 戻り値
見つかった文字の位置、またはそのような文字が見つからなければ npos。
[編集] 例外
5)
noexcept 指定:
noexcept(std::is_nothrow_convertible_v<const T&, std::basic_string_view<CharT, Traits>>)
[編集] 欠陥報告
以下の動作変更欠陥報告は以前に発行された C++ 標準に遡って適用されました。
DR | 適用先 | 発行時の動作 | 正しい動作 |
---|---|---|---|
LWG 2946 | C++17 | string_view overload causes ambiguity in some cases
|
avoided by making it a template |
[編集] 例
Run this code
#include<string> #include<iostream> 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
[編集] 関連項目
文字列内の文字を探します (パブリックメンバ関数) | |
部分文字列が現れる最後の位置を探します (パブリックメンバ関数) | |
文字が現れる最初の位置を探します (パブリックメンバ関数) | |
文字が現れない最初の位置を探します (パブリックメンバ関数) | |
文字が現れない最後の位置を探します (パブリックメンバ関数) |