public member function
<locale>

std::ctype::scan_is

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

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

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

参数

m
成员类型 mask 的位掩码(从 ctype_base 继承),指定要扫描的类别。如果位掩码组合了多个类别,则函数将返回指向属于任何类别的第一个字符的指针。
它可以是以下成员位掩码值的任何按位组合
成员常量描述
spaceunspecified (unique bits)空白字符
printunspecified (unique bits)可打印字符
cntrlunspecified (unique bits)控制字符
upperunspecified (unique bits)大写字母
lowerunspecified (unique bits)小写字母
alphaunspecified (unique bits)字母字符
digitunspecified (unique bits)十进制数字
punctunspecified (unique bits)标点符号字符
xdigitunspecified (unique bits)十六进制数字
alnumalpha|digit字母数字字符
graphalnum|punct具有图形表示的字符
成员常量描述
spaceunspecified (unique bits)空白字符
printunspecified (unique bits)可打印字符
cntrlunspecified (unique bits)控制字符
upperunspecified (unique bits)大写字母
lowerunspecified (unique bits)小写字母
alphaunspecified (unique bits)字母字符
digitunspecified (unique bits)十进制数字
punctunspecified (unique bits)标点符号字符
xdigitunspecified (unique bits)十六进制数字
blankunspecified (unique bits)空白字符
alnumalpha|digit字母数字字符
graphalnum|punct具有图形表示的字符
有关 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
17
18
// ctype::scan_is example
#include <iostream>       // std::cout
#include <locale>         // std::locale, std::ctype, std::use_facet

int main ()
{
  std::locale loc;

  const char quote[] = "Characters do not change. Opinions alter, but characters are only developed.";
                       // (quoting Benjamin Disraeli)

  // get a pointer to the first "punctuation" character:
  const char * p = std::use_facet< std::ctype<char> >(loc).scan_is ( std::ctype<char>::punct, quote, quote+76 );

  std::cout << "The second sentence is: " << p << '\n';

  return 0;
}

输出

The second sentence is: . Opinions alter, but characters are only developed.


数据竞争

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

异常安全

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

另见