Boost String Algorithms Library

原创 2016年09月18日 23:21:54
来自Boost帮助文档

简介

Boost字符串算法库提供了很多操作字符串的算法:大小写转换、去掉字符串首尾空白字符或指定字符、查找、替换、分割等等。

使用方法

#include <boost/algorithm/string.hpp>
using namespace std;
using namespace boost;

// ...

string str1(" hello world! ");
to_upper(str1);  // str1 == " HELLO WORLD! "
trim(str1);      // str1 == "HELLO WORLD!"

string str2=
	to_lower_copy(
		ireplace_first_copy(
			str1,"hello","goodbye")); // str2 == "goodbye world!"

命名规则

带_copy后缀的不修改源字符串,返回一个修改后的字符串副本,不带_copy后缀的则原地修改字符串。
带 i 前缀的表示该函数是大小写不敏感的。

字符串转换

string str1("HeLlO WoRld!");
to_upper(str1); // str1=="HELLO WORLD!"

谓词

// 是否是指定字符串结尾
bool is_executable( string& filename )
{
	return 
		iends_with(filename, ".exe") ||
		iends_with(filename, ".com");
}

// ...
string str1("command.com");
cout 
	<< str1
	<< (is_executable(str1)? "is": "is not") 
	<< "an executable" 
	<< endl; // prints "command.com is an executable"

//..
char text1[]="hello";
cout 
	<< text1 
	<< (all( text1, is_lower() )? " is": " is not")
	<< " written in the lower case" 
	<< endl; // prints "hello is written in the lower case"

Trimming

string str1="     hello world!     ";
string str2=trim_left_copy(str1);   // str2 == "hello world!     "
string str3=trim_right_copy(str1);  // str3 == "     hello world!"
trim(str1);                         // str1 == "hello world!"

string phone="00423333444";
// remove leading 0 from the phone number
trim_left_if(phone,is_any_of("0")); // phone == "423333444"

查找

char text[]="hello dolly!";
iterator_range<char*> result=find_last(text,"ll");

transform( result.begin(), result.end(), result.begin(), bind2nd(plus<char>(), 1) );
// text = "hello dommy!"            

to_upper(result); // text == "hello doMMy!"

// iterator_range is convertible to bool
if(find_first(text, "dolly"))
{
	cout << "Dolly is there" << endl;
}

替换

string str1="Hello  Dolly,   Hello World!"
replace_first(str1, "Dolly", "Jane");      // str1 == "Hello  Jane,   Hello World!"
replace_last(str1, "Hello", "Goodbye");    // str1 == "Hello  Jane,   Goodbye World!"
erase_all(str1, " ");                      // str1 == "HelloJane,GoodbyeWorld!"
erase_head(str1, 6);                       // str1 == "Jane,GoodbyeWorld!"

Find Iterator

string str1("abc-*-ABC-*-aBc");
// Find all 'abc' substrings (ignoring the case)
// Create a find_iterator
typedef find_iterator<string::iterator> string_find_iterator;
for(string_find_iterator It=
		make_find_iterator(str1, first_finder("abc", is_iequal()));
	It!=string_find_iterator();
	++It)
{
	cout << copy_range<std::string>(*It) << endl;
}

// Output will be:
// abc
// ABC
// aBC

typedef split_iterator<string::iterator> string_split_iterator;
for(string_split_iterator It=
	make_split_iterator(str1, first_finder("-*-", is_iequal()));
	It!=string_split_iterator();
	++It)
{
	cout << copy_range<std::string>(*It) << endl;
}

// Output will be:
// abc
// ABC
// aBC

分割字符串

string str1("hello abc-*-ABC-*-aBc goodbye");

typedef vector< iterator_range<string::iterator> > find_vector_type;

find_vector_type FindVec; // #1: Search for separators
ifind_all( FindVec, str1, "abc" ); // FindVec == { [abc],[ABC],[aBc] }

typedef vector< string > split_vector_type;

split_vector_type SplitVec; // #2: Search for tokens
split( SplitVec, str1, is_any_of("-*"), token_compress_on ); // SplitVec == { "hello abc","ABC","aBc goodbye" }



vs2013 boost 安装问题若干

最近RP太差,安装环境出现各种BUG,ubuntu出现网络上不去的各种问题,晚上安装boost都出现问题。 打开log文件 ERROR: Cannot determine the loca...
  • swfa1
  • swfa1
  • 2015年06月13日 21:24
  • 2023

在vs2013中引用boost库

关于Boost的盛名我就不多费口舌了,它是一个经过千锤百炼、可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。 Boost库由C++标准委员会库工作组成员发起,其中有些内...
  • qq_31558353
  • qq_31558353
  • 2015年12月18日 09:58
  • 1638

vs2013 boost库编译小结

参照: ink 和 runtime-link,搭配shared 和 static VS2010 Boost编译安装 Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化...
  • chenjh213
  • chenjh213
  • 2014年12月30日 14:16
  • 2827

ubuntu10.10 下安装Boost C++ library

1.下载boost_1_44_0.tar.bz2。2.将下载到文件放在一个指定到临时目录。我的是放在/home/user/software下面,然后在终端中运行:  $ tar --bzip2 -xf...
  • singno116
  • singno116
  • 2010年11月28日 14:34
  • 2703

c++ boost 文件读取写入 逗号隔开的字符串

boost 简单参数配置文件的读取与写入,以逗号隔开的字符串形式使用
  • summerxzg
  • summerxzg
  • 2017年04月12日 13:28
  • 1133

VS2013环境下Boost库配置

序言最近了解各大互联网公司的校招要求,发现了解Boost程序库也是不可或缺的一部分~于是,决定潜心研究下,这个准标准库~首先,在官网下载boost的最新版本Boost 1.59.0 ,这是当前的最新版...
  • fly_yr
  • fly_yr
  • 2015年09月26日 11:28
  • 9443

Windows+VS2013下Boost1.59编译运行

VS2013下Boost1.59的全部编译、测试运行 Boost是一个非标准库,包含着丰富的小工具,可参考《Boost程序库完全开发指南:深入C++"准"标准库(第3版)》一书(该书使用Bo...
  • YeahXiYi
  • YeahXiYi
  • 2016年11月09日 09:19
  • 1284

boost c++ library on linux 初体验

最近开始学习boost c++ library,并且打算用业余的时间长期坚持下去。再一个就是通过学习boost库练习在linux下面进行c++编程。今天记录一下boost的入门吧。 首先,入门最好的...
  • Garfier
  • Garfier
  • 2012年07月22日 22:42
  • 4906

图论学习(一)使用Boost Graph Library表示图

本文通过使用Boost Graph Library实现图的新建和遍历,来学习图论算法。
  • ktigerhero3
  • ktigerhero3
  • 2017年05月02日 14:23
  • 471

如何在vs2015下配置boost库

怎样在VS2013中安装配置boost_1_55_0库(简单些) 因为boost都是使用模板的技术,所以所有代码都是写在一个.hpp头文件中。这样boost中的大部分内容是不需要...
  • u010355144
  • u010355144
  • 2015年12月29日 17:27
  • 12490
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Boost String Algorithms Library
举报原因:
原因补充:

(最多只允许输入30个字)