第118讲 boost::algorithm::string之其他

字符串算法我们说来也好几讲的内容来,剩下的已经不多又或者是我们没有必要再一一例举,那么这一讲我们就来结束关于boost::algorithm::string剩下的一些内容。


判断一个字符属于什么类型这些小工具boost::algorithm::string自然也是有提供来的,比如:

//================================================

is_space : //字符是空格或者是制表符

is_alnum : //字符是字母或者数字字符

is_alpha : //字符是否为字母

is_cntrl : //字符是否为控制字符

is_digit : //字符是否为十进制数字

is_xdigit : //字符是否为十六进制数字

is_graph : //字符是否为图形字符

is_lower : //字符是否为小写字符

is_upper : //字符是否为大写字母

is_print : //字符是否为可打印字符

is_any_of : //字符是否为参数中的任意字符

is_from_rang : //字符是否在指定范围之内


//===============================================


除来这些分类函数之外,自然也和我们说过的MString一样拥有start_with ,end_with,他们同样有i开头的版本,i开头的自然是不区分大小写的比较,同样也有修剪系列函数,他们的功能和我们说过的MString的修剪函数一样,而且名字也一样,trim_left,trim_right,trim,他们也有带有_copy后最的版本,但是boost里面的却还有_if的版本,他们需要一个函数对象或者能够作为判断式的函数指针,我们甚至可以认为非_if的版本是_if后缀版本的特殊情况。


除来上面这些还有一些有用的函数,比如contains,该函数判断一个字符串中是否包含指定字符串,equals判断两个字符串是否相等,lexicographical_compare函数用于根据字典顺序判断第一个字符串是否小于第二个字符串,当然这些函数也拥有i前缀的版本,这些函数可以说在实际开发过程中是相当有用的。


//================================================

if (boost::algorithm::is_digit()(48)){

std::cout <<"

48 is digit"

<<std::endl;

}

else{

std::cout <<"

48 isn't digit"

<<std::endl;

}


if (boost::algorithm::is_xdigit()(75)){

std::cout <<"

75 is xdigit"

<<std::endl;

}

else{

std::cout <<"

75 isn't xdigit"

<<std::endl;

}


if (boost::algorithm::is_cntrl()(13)){

std::cout <<"

13 is cntrl "

<<std::endl;

}

else{

std::cout <<"

13 isn't cntrl "

<<std::endl;

}


if (boost::algorithm::is_print()(13)){

std::cout <<"

13 is print "

<<std::endl;

}

else{

std::cout <<"

13 isn't print "

<<std::endl;

}


if (boost::algorithm::is_alnum()(70)){

std::cout <<"

70 is alnum "

<<std::endl;

}

else{

std::cout <<"

70 isn't alnum "

<<std::endl;

}


if (boost::algorithm::is_any_of("

abcdefg"

)(67)){

std::cout <<"

67 is is_any_of(acbdefg)"

<<std::endl;

}

else{

std::cout <<"

67 isn't is_any_of(acbdefg)"

<<std::endl;

}


if (boost::algorithm::is_from_range(67, 90)(70)){

std::cout <<"

70 is is_from_range(67,90)"

<<std::endl;

}

else{

std::cout <<"

70 isn't is_from_range(67,90)"

<<std::endl;

}


std::string str("

Hello World Hello Hello"

);

assert(boost::algorithm::istarts_with(str, "

hello"

));

//不区分大小写

assert(boost::algorithm::starts_with(str, "

Hello"

));

//区分大小写

assert(boost::algorithm::iends_with(str, "

hello"

));

//不区分大小写

assert(boost::algorithm::ends_with(str, "

Hello"

));

//区分大小写


str = "

Hello "

;

boost::algorithm::trim(str);

// 将前后空格去掉

assert(boost::algorithm::equals(str, "

Hello"

));

assert(boost::algorithm::iequals(str, "

hello"

));


//======================================

第118讲 boost::algorithm::string之其他

这里就列举这些,其他的大家按照上面的方法来试着怎么用吧。


关于字符串的操作的,只要熟练使用来这些就基本足够应付各种问题来,如果要遇到这些都无法满足的情况,那么就开大招——使用正则表达式吧。大家可以预先去了解一下正则表达式的东西,因为我们可能不在课堂上给大家介绍正则表达式怎么写,这里只会告诉大家怎么使用C++中的正则表达式。

//=============================================

回复D或者d查看目录,回复阿拉伯数字查看相应章节


原文始发于微信公众号(

C/C++的编程教室

):第118讲 boost::algorithm::string之其他

|

发表评论