boost库中的字符串算法查找、切割、替换、删除、合并、大小写转换等等详解
零、小序
字符串操作是每一个程序员几乎每天都要进行的工作,很多的开发工作中都要用到字符串的操作,无论是网络通讯、界面显示还是写日志等操作,大多数程序员都喜欢搞成字符串的形式来进行操作。标准的C++对字符串的操作已经提供了很多方法,但还是有很多不尽人意的地方,例如对字符串切割,大小写转换、替换、删除等等操作,使用boost进行处理会更加的方便,boost库提供的支持更加的齐全,没有boost库做不到的,只有你想不到的!
一、大小写转换
1、大小写转换函数
boost提供的大小写转换函数有boost::algorithm::to_upper_copy和boost::algorithm::to_lower_copy、boost::algorithm::to_upper和boost::algorithm::to_lower这两组大小写转换的形式。前一组的大小写转换不会改变原来的字符串,会返回一个原来字符串的拷贝,后面一组大小写转换会改变原来的字符串的大小写。
细心的朋友会发现上面这两组大小写转换会提供的有两个参数,第一个是传入要转换的字符串,第二个是有关区域设置的,这个区域设置一般默认就行,除非你开发的软件具有区域性,比如开发的软件给外国人使用,你可能需要设置成那个国家的区域标志,以适合那个国家的文化需要。
2、大小写代码示例
// BoostStringAlgorithms.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include <boost/algorithm/string.hpp>
using namespace std;
using namespace boost;
int main()
{
cout << "-------------------boost库大小写转换------------------" << endl;
string tmpStrUpper = "HELLO,I'M ISMILELI";
string tmpStrLower = "hello,i'm ismileli";
cout << "-------------------打印原来字符串的值------------------" << endl;
cout << "tmpStrUpper:" << tmpStrUpper << endl;
cout << "tmpStrLower:" << tmpStrLower << endl;
cout << "-------------------使用*_copy转换大小写------------------" << endl;
string upperToLowerStr = boost::algorithm::to_lower_copy(tmpStrUpper);
string lowerToUpperStr = boost::algorithm::to_upper_copy(tmpStrLower);
cout << "tmpStrUpper:" << tmpStrUpper << endl;
cout << "tmpStrLower:" << tmpStrLower << endl;
cout << "upperToLowerStr:" << upperToLowerStr << endl;
cout << "lowerToUpperStr:" << lowerToUpperStr << endl;
cout << "-------------------使用不带后缀*_copy转换大小写------------------" << endl;
boost::algorithm::to_lower(tmpStrUpper); // 没有返回值
boost::algorithm::to_upper(tmpStrLower);
cout << "tmpStrUpper:" << tmpStrUpper << endl;
cout << "tmpStrLower:" << tmpStrLower << endl;
std::cout << "Hello World!\n";
getchar();
}
运行结果:
二、删除
1、删除函数
boost库提供了众多的字符串删除函数,并且提供了很多版本供使用,例如以i开头的用来区分大小写敏感、以_copy结尾的以不改变原来的字符串等,以满足使用者不同的需求。
boost库提供的删除函数如下:
erase_first:删除在字符串中第一个出现的字符串。
erase_last:删除在字符串中最后一个出现的字符串。
erase_nth:删除在字符串中第n个出现的字符串。
erase_all:删除在字符串中所有出现的字符串。
erase_head:删除输入的开头。
erase_tail:删除输入的结尾。
2、删除代码示例
// BoostStringAlgorithms.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include <boost/algorithm/string.hpp>
using namespace std;
using namespace boost;
int main()
{
cout << "-------------------boost库字符串删除------------------" << endl;
string tmpStrErase = "Hello!Hello!I'm ISmileLi!Hello!Hello!I'm ISm