public member function
<locale>

std::ctype::scan_not

const char_type* scan_not (mask m, const char_type* low, const char_type* high) const;
返回分类中的第一个字符
返回范围 [low,high) 中第一个不属于 m 指定的任何类别的字符。如果在范围内未找到此类字符,则返回 high

ctype 的泛型模板中,此函数仅调用虚保护成员 do_scan_not,该成员默认执行上述操作。

char 特化 (ctype<char>) 中,此函数使用内部 table 直接返回结果,而不调用任何虚成员。

参数

m
类型为 mask (继承自 ctype_base) 的成员位掩码,指定要扫描的类别。如果位掩码组合了多个类别,则函数返回指向不属于**任何**类别的第一个字符的指针。
它可以是以下成员位掩码值的任何按位组合
成员常量描述
spaceunspecified (unique bits)white-space character
printunspecified (unique bits)可打印字符
cntrlunspecified (unique bits)控制字符
upperunspecified (unique bits)大写字母
lowerunspecified (unique bits)小写字母
alphaunspecified (unique bits)字母字符
digitunspecified (unique bits)decimal digit
punctunspecified (unique bits)punctuation character
xdigitunspecified (unique bits)hexadecimal digit
alnumalpha|digitalpha-numeric character
graphalnum|punctcharacter with graphic representation
成员常量描述
spaceunspecified (unique bits)white-space character
printunspecified (unique bits)可打印字符
cntrlunspecified (unique bits)控制字符
upperunspecified (unique bits)大写字母
lowerunspecified (unique bits)小写字母
alphaunspecified (unique bits)字母字符
digitunspecified (unique bits)decimal digit
punctunspecified (unique bits)punctuation character
xdigitunspecified (unique bits)hexadecimal digit
blankunspecified (unique bits)空白字符
alnumalpha|digitalpha-numeric character
graphalnum|punctcharacter with graphic representation
有关 ASCII 字符如何根据这些类别进行分类的详细信息,请参阅 <cctype>
low, high
指向字符序列的开头和结尾的指针。使用的范围是 [low,high),它包含 lowhigh 之间的所有字符,包括 low 指向的字符,但不包括 high 指向的字符。
请注意,*空字符*也会被考虑在内,函数可能会在它们之后继续查找,直到找到匹配项或完成整个范围。
成员类型 char_type 是字面量的字符类型(定义为 ctype 的模板参数 charT 的别名)。

返回值

指向范围内第一个不分类的元素,或者如果未找到则为 high 的指针。
成员类型 char_type 是字面量的字符类型(定义为 ctype 的模板参数 charT 的别名)。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// ctype::scan_not example
#include <iostream>       // std::cout
#include <locale>         // std::locale, std::ctype, std::use_facet

int main ()
{
  std::locale loc;

  const char period[] = "November2008";

  const char * p = std::use_facet< std::ctype<char> >(loc).scan_not ( std::ctype<char>::alpha, period, period+12 );

  std::cout << "The first non-alphabetic character is: " << *p << '\n';

  return 0;
}

输出

The first non-alphabetic character is: 2.


数据竞争

对象和范围 [low,high) 中的元素被访问。

异常安全

强保证:如果抛出异常,对象将不发生任何更改。

另见