C/C++与Python字符串处理比较

4 篇文章 0 订阅
1 篇文章 0 订阅

本文比较了C,C++和Python中关于字符串处理的一些库函数。这里你可能会奇怪,Python和C/C++本来就不是同一层次上的语言,为什么要放在一起比较。这里就是参照Python来看看C++的字符串处理目前是一种什么情况。Python现在也属于一种很热门的脚本语言,它以其容易上手著称。它的库中提供了众多的函数、类和模块支持对字符串的处理。本文期望能够为使用C++的人提供一定的帮助。

在比较值钱,先区分一下C/C++中一下三个关于字符串处理的头文件的区别。

#include <string.h>
#include <cstring>
#include <string>

第一个是标准的C的字符串处理的库,它处理的对象是char []。第二个是经过C++包装的C标准字符串处理库,也就是说他们内容其实是完全一样的,它处理的当然还是char []。第三个就是C++中的string类库。本文做的比较主要是C string.h,C++ string和Python str。其中C++中字符串处理的库,不仅仅包含了STL中的也包含了准标准库Boost中的有关字符串处理的内容。

 

C

C++

Python

类型转换

 

Boost/conversion/lexical_cast

 

Int(),float(),long()

元素访问

[]

Iterators, [], at,

'__getitem__'

修改元素

[]

assign

 

 

附加

strcat

strncat

+=,append,push_back,copy

__add__,'join'

插入

 

insert

 

 

删除

 

erase

 

 

替换

[]

replace

‘replace’’translate’

切片,子字符串

memcpy,memmove

Strcpy,strncpy

substr

'__getslice__'

比较

memcmp,strcmp,

strcoll,strncmp,strxfrm

compare

==

查找

memchr,strchr,strcspn

strpbrk,strrchr,strspn

strstr,strtok

Find,rfind,find_first_of,

find_last_of,

find_first_not_of,

find_last_not_of,

boost/string_algor

‘find’’index’’rfind’’rindex’ ,

_contains__'‘count’

大小及容量

strlen

Size,length,max_size,

resize,capacity,

reserve,clear,empty

__len__

修剪

 

Boost/string_algor

‘strip’’rstrip’’expandtabs’

’ljust’’lstrip’’rjust’’center’’zfill’

大小写

 

Boost/string_algor

‘lower’’swapcase’’upper’’title’ Capitalize

编解码

 

Boost/locale

‘decode’’encode’

特点判断

 

Boost/string_algor

‘endswith’’isalnum’’isalpha’

’isdigit’’islower’’isspace’’istitle’

’isupper’’startswith’

分割

 

Boost/string_algor

‘rpartition’’rsplit’’splitlines’’split’’partition’

格式化

 

Boost/format

‘format’

正则表达式

 

Boost/regex,boost/xpressive

re

从上面的比较可以清晰的看出,对于字符串的处理,C更加直接,功能也更少,更基本,可以用它来写成更加复杂的函数。而C++ string STL也是提供比较基本的函数,而Boost则刚好给string提供了较多的更加实用的功能,弥补了C++这方面的缺陷,使得C++更加容易上手。因此在使用C++的时候结合Boost已经基本上可以像写Python那样方便的使用库了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值