C++ String::find_last_not_of() 函数



C++ 的std::string::find_last_not_of()函数用于查找字符串中最后一个不匹配指定集合中任何字符的字符的位置。它从结尾向开头搜索字符串,并返回最后一个不匹配提供的集合中任何字符的字符的位置。

如果字符串中的所有字符都是集合的一部分,则它返回std::string::npos。

语法

以下是std::string::find_last_not_of()函数的语法。

size_t find_last_not_of (const string& str, size_t pos = npos) const noexcept;
or	
size_t find_last_not_of (const char* s, size_t pos = npos) const;
or
size_t find_last_not_of (const char* s, size_t pos, size_t n) const;
or	
size_t find_last_not_of (char c, size_t pos = npos) const noexcept;

参数

  • str − 指示另一个字符串对象。
  • pos − 指示要考虑搜索的字符串中最后一个字符的位置。
  • s − 指示指向字符数组的指针。
  • n − 指示要搜索的字符数量。
  • c − 指示要搜索的单个字符。

返回值

此函数返回最后一个不匹配字符的位置。

示例 1

以下是一个使用 C++ 中的 std::string::find_last_not_of 查找不在另一个字符串中的最后一个字符的示例。

#include <iostream>
#include <string>
using namespace std;
int main() {
   string str = " Tutorialspoint10years@ ";
   size_t found = str.find_last_not_of("abcdefghijklmnopqrstuvwxyz ");
   if (found != string::npos) {
      cout << "The last non-alphabetic character is " << str[found];
      cout << " at index " << found << '\n';
   }
   return 0;
} 

输出

让我们编译并运行上面的程序,这将产生以下结果:

The last non-alphabetic character is @ at index 22

示例 2

以下是如何在字符串中查找最后一个非数字的另一个示例。

#include <iostream>
#include <string>
using namespace std;
int main() {
   string str = "12345abcXYZ6789";
   size_t pos = str.find_last_not_of("0123456789");
   if (pos != string::npos) {
      cout << " '" << str[pos] << "' is at index " << pos << endl;
   }
   return 0;
}

输出

如果我们运行上面的代码,它将生成以下输出。

 'Z' is at index 10

示例 3

在这个程序中,我们跳过字符串开头的空格。

#include <iostream>
#include <string>
using namespace std;
int main() {
   string str = "    Tutorialspoint10years@";
   size_t pos = str.find_last_not_of(" \t\n");
   if (pos != string::npos) {
      cout << "last non-whitespace character is '" << str[pos] << "' at index " << pos << endl;
   }
   return 0;
}

输出

以下是上述代码的输出。

Last non-whitespace character is '@' at index 25                    

示例 4

在这个程序中,我们初始化了两个字符串以查找不在另一个字符串中的最后一个字符。

#include <iostream>
#include <string>
using namespace std;
int main() {
   string str1 = "Tutorialspoint10years@";
   string str2 = "10years@";
   size_t pos = str1.find_last_not_of(str2);
   if (pos != string::npos) {
      cout << "last character in '" << str1 << "' not in '" << str2 << "' is '" << str1[pos] << "' at index " << pos << endl;
   }
   return 0;
} 

输出

以下是上述代码的输出。

last character in 'Tutorialspoint10years@' not in '10years@' is 't' at index 13  
string.htm
广告