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
廣告