string s = "I Like C++ Tutorial";
cout << s.find_last_of("Like");
我知道 find_last_of 返回匹配的最后一个字符,但是,它返回 16
,这是 Tutorial
中字母 i
的位置>,但我很困惑,因为我正在搜索 Like
而不是 i
的最后位置,我试图从字符串中删除 i
.它按我的预期返回 5
。但问题是为什么返回16
?
最佳答案
find_last_of
找到等于给定字符序列中的一个字符的最后一个字符。
字符序列是“Like”
。最后一个L
在位置3
,最后一个i
在位置16
,最后一个k
位于 4
位置,最后一个 e
位于 5
位置。所以它返回了 16
,这是这些值中的最大值。
如果字符序列是 "like"
而不是 "Like"
,它会返回 18
因为最后一个 l
位于 18
位置。
如果字符序列中没有字母与字符串中的任何字母相匹配,npos
被退回。
关于c++ - std::find_last_of 实际上是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55296650/