Table 11.3. Predicates
Algorithm name |
Description |
Functions |
starts_with |
Check if a string is a prefix of the other one |
starts_with()
istarts_with() |
ends_with |
Check if a string is a suffix of the other one |
ends_with()
iends_with() |
contains |
Check if a string is contained of the other one |
contains()
icontains() |
equals |
Check if two strings are equal |
equals()
iequals() |
all |
Check if all elements of a string satisfy the given predicate |
all() |
基础示例:
1
//
starts
2
assert(starts_with(
"
boost_python-vc71-mt-1_33.dll
"
,
"
boost
"
));
3
assert(
!
starts_with(
"
boost_python-vc71-mt-1_33.dll
"
,
"
BOOST
"
));
4
assert(istarts_with(
"
boost_python-vc71-mt-1_33.dll
"
,
"
BOOST
"
));
5
//
ends
6
assert(ends_with(
"
boost_python-vc71-mt-1_33.dll
"
,
"
.dll
"
));
7
assert(
!
ends_with(
"
boost_python-vc71-mt-1_33.dll
"
,
"
.DLL
"
));
8
assert(iends_with(
"
boost_python-vc71-mt-1_33.dll
"
,
"
.DLL
"
));
9
//
contains
10
assert(contains(
"
boost_python-vc71-mt-1_33.dll
"
,
"
python
"
));
11
assert(
!
contains(
"
boost_python-vc71-mt-1_33.dll
"
,
"
PYTHON
"
));
12
assert(icontains(
"
boost_python-vc71-mt-1_33.dll
"
,
"
PYTHON
"
));
13
//
equals
14
assert(equals(
"
boost
"
,
"
boost
"
));
15
assert(
!
equals(
"
boost
"
,
"
BOOST
"
));
16
assert(iequals(
"
boost
"
,
"
BOOST
"
));
17
//
Empty string test
18
assert(starts_with(
"
boost_python-vc71-mt-1_33.dll
"
,
""
));
19
assert(ends_with(
"
boost_python-vc71-mt-1_33.dll
"
,
""
));
20
assert(contains(
"
boost_python-vc71-mt-1_33.dll
"
,
""
));
21
//
all
22
assert(all(
"
\x20\t\n\r
"
, is_space()));
23
assert(all(
"
\x20\t\n\r
"
, is_classified(std::ctype_base::space)));
24
assert(all(
"
\x20\t\n\r
"
, is_any_of(
"
\x20\t\n\r
"
)));
25
assert(all(
"
abcde
"
, is_from_range(
'
a
'
,
'
e
'
)));
26
assert(all(
"
abcde
"
, is_from_range(
'
a
'
,
'
z
'
)));
27
assert(
!
all(
"
abcde
"
, is_from_range(
'
b
'
,
'
c
'
)));
28
assert(all(
"
abc __ de
"
, is_from_range(
'
a
'
,
'
z
'
)
||
is_space()
||
is_any_of(
"
_
"
)));
29
在前面都没有详细说明is_xxxx是哪些函数,下面列出:
1
is_space
//
空格
2
is_alnum
//
字母和数字
3
is_alpha
//
字母
4
is_cntrl
//
控制字符
5
is_digit
//
数字
6
is_graph
//
可打印字符(不含空格)
7
is_lower
//
小写
8
is_print
//
可打印字符(含空格)
9
is_punct
//
标点
10
is_upper
//
大写
11
is_xdigit
//
16进制数字
12
is_any_of
//
13
is_from_range
//