C++ String::find_first_not_of() 函式



C++ 的std::string::find_first_not_of()函式用於查詢字串中第一個不匹配指定集合中任何字元的字元。它以字串或字元集作為引數,並返回原始字串中第一個在給定集合中找不到的字元的索引。

如果字串中的所有字元都在集合中,則它返回 std::string::npos。

語法

以下是 std::string::find_first_not_of() 函式的語法。

size_t find_first_not_of (const string& str, size_t pos = 0) const;
or	
size_t find_first_not_of (const char* s, size_t pos = 0) const;
or
size_t find_first_not_of (const char* s, size_t pos, size_t n) const;
or	
size_t find_first_not_of (char c, size_t pos = 0) const;

引數

  • str − 表示字串物件。
  • s − 表示指向字元陣列的指標。
  • pos − 表示字串中第一個字元的位置。
  • n − 表示要搜尋的字元值的個數。
  • c − 表示要搜尋的單個字元。

返回值

此函式返回第一個不匹配字元的位置。

示例 1

在下面的示例中,我們將考慮 find_first_not_of() 函式的基本用法。

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

輸出

讓我們編譯並執行以上程式,這將產生以下結果:

 The first non-alphabetic character is I at index 1

示例 2

考慮以下示例,我們將查詢字串中的第一個非數字字元。

#include <iostream>
#include <string>
using namespace std;
int main() {
   string str = " 12345abc6789";
   size_t pos = str.find_first_not_of(" 0123456789");
   if (pos != string::npos) {
      cout << " First non-digit is at index " << pos << endl;
   }
   return 0;
}

輸出

如果我們執行以上程式碼,它將生成以下輸出。

First non-digit is at index 6

示例 3

在下面的示例中,我們將跳過字串開頭處的空格。

#include <iostream>
#include <string>
using namespace std;
int main() {
   string str = "    Hello World! ";
   size_t pos = str.find_first_not_of(" \t\n ");
   if (pos != string::npos) {
      cout << " First non-whitespace character is at index " << pos << endl;
   }
   return 0;
}

輸出

以下是以上程式碼的輸出。

 First non-whitespace character is at index 4                    

示例 4

讓我們看看下面的示例,我們將初始化兩個字串以查詢另一個字串中不存在的第一個字元。

#include <iostream>
#include <string>
using namespace std;
int main() {
   string str1 = " abcdefg";
   string str2 = " abc";
   size_t pos = str1.find_first_not_of(str2);
   if (pos != string::npos) {
      cout << "First character in '" << str1 << "' not in '" << str2 << "' is '" << str1[pos] << "' at index " << pos << endl;
   } else {
      cout << "All characters in '" << str1 << "' are found in '" << str2 << "'" << endl;
   }
   return 0;
} 

輸出

以下是以上程式碼的輸出。

First character in ' abcdefg' not in ' abc' is 'd' at index 4
string.htm
廣告