string的rfind函数有4个重载版本:
string (1) | size_t rfind (const string& str, size_t pos = npos) const; |
---|---|
c-string (2) | size_t rfind (const char* s, size_t pos = npos) const; |
buffer (3) | size_t rfind (const char* s, size_t pos, size_t n) const; |
character (4) | size_t rfind (char c, size_t pos = npos) const; |
1、参数pos
其中的pos指的是首次匹配的起点,即从哪个位置开始比较。如
std::string strTest = "#aba#";
strTest.rfind("ab", 3);
那么会首先从第三个位置(位置从0开始)尝试和匹配“a#”,匹配失败后再向前匹配。最终匹配成功的位置为1.
若有
std::string strTest = "#abab";
strTest.rfind("ab", 3);
那么从第三个位置开始匹配,那么首次就可以匹配成功。最终匹配位置为3。
2、参数n
n指的是查找字符串的长度,即参数str或者s中的前n个字符。若指定了参数n,那么就只查找str或者s的前n个字符。如
std::string strTest = "#aba#";
strTest.rfind("abc", 3, 2);
那么会首先从第三个位置(位置从0开始)尝试以"abc"的前两个字符"ab"和“a#”匹配,首次匹配失败后,继续向前匹配。
最终在位置1匹配成功。