public member function
<string>

std::basic_string::find_first_not_of

string (1)
size_type find_first_not_of (const basic_string& str, size_type pos = 0) const;
c-string (2)
size_type find_first_not_of (const charT* s, size_type pos = 0) const;
buffer (3)
size_type find_first_not_of (const charT* s, size_type pos, size_type n) const;
character (4)
size_type find_first_not_of (charT c, size_type pos = 0) const;
string (1)
size_type find_first_not_of (const basic_string& str, size_type pos = 0) const noexcept;
c-string (2)
size_type find_first_not_of (const charT* s, size_type pos = 0) const;
buffer (3)
size_type find_first_not_of (const charT* s, size_type pos, size_type n) const;
character (4)
size_type find_first_not_of (charT c, size_type pos = 0) const noexcept;
在字符串中查找不匹配的字符
basic_string 中搜索第一个与其参数中指定的任何字符都不匹配的字符。

指定 pos 时,搜索仅包括位置 pos 或之后的字符,忽略该字符之前可能出现的任何字符。

该函数使用traits_type::eq来确定字符的等价性。

参数

str
另一个 basic_string,其中包含要在搜索中使用的字符集。
pos
搜索中要考虑的字符串中第一个字符的位置。
如果大于字符串长度,则该函数永远找不到匹配项。
注意:第一个字符用值表示0(不是1): 一个值为0表示搜索整个字符串。
s
指向字符数组的指针。
如果指定了参数n(3),则数组中的前n个字符用于搜索。
否则(2),期望一个以空字符结尾的序列:用于搜索的字符序列的长度由第一个出现的空字符确定。
n
要搜索的字符值的数量。
c
要搜索的单个字符。

charTbasic_string 的字符类型(即,它的第一个模板参数)。
成员类型size_type是一种无符号整型类型。

返回值

第一个不匹配字符的位置。
如果未找到此类字符,则该函数返回 basic_string::npos

成员类型size_type是一种无符号整型类型。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// string::find_first_not_of
#include <iostream>
#include <string>

int main ()
{
  std::string str ("look for non-alphabetic characters...");

  std::string::size_type found = str.find_first_not_of("abcdefghijklmnopqrstuvwxyz ");

  if (found!=std::string::npos)
  {
    std::cout << "The first non-alphabetic character is " << str[found];
    std::cout << " at position " << found << '\n';
  }

  return 0;
}

The first non-alphabetic character is - at position 12


复杂度

未指定,但通常与length()-pos乘以要匹配的字符数成线性关系(最坏情况)。

迭代器有效性

没有变化。

数据竞争

该对象被访问。

异常安全

如果已知s未指向足够长的数组,会导致未定义行为
否则,该函数永远不会抛出异常(无抛出保证)。

另见