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

© . All rights reserved.