您的位置:首页 > 编程语言 > C语言/C++

c/c++/boost字符串的学习

2015-09-20 09:38 323 查看
1.纯c中字符串的机制以及对其的处理

C语言中对字符串常量是按字符数组处理的,c语言中没有字符串变量,只有字符变量

(1)字符串的表现形式

字符数组的定义:

char c[10];

c[0]='i';

初始化:

char c[10]={0};

char c[10]={'I',' ','a','m'};//不足的用'\0'补全

char c[]="I am happy"; //自动在后面加上了一个'\0'; ***与char c={'I',' ','a','m',' ','h','a','p','p','y','\0'}等价

通过指针引用字符串

char * string="I love China!"; 等价于:char * string ; string="I love China!";

(2)对字符的处理

#include<ctype.h>

isalnum(c) 如果c是字母或数字,返回 true

isalpha(c) 如果c是字母,返回true alphabet['ælfəbet] 字母

iscntrl(c) c是控制符,返回true

isdigit(c) 检查参数c是否是阿拉伯数字0到9,若是则返回true,否则返回false

isgraph(c) 如果c不是空格,则可打印,,则为true

islower(c) 如果c是小写字母,则为true

isupper(c) 如果c是大写字符,则为true

isprint(c) 如果c是可打印的字符,则为true

ispunct(c) 如果c是标点符号,则为true

isspace(c) 如果c是空白字符,则为true

isxdigit(c) 如果c是十六进制数,则为true

tolower(c) 如果c是大写字符,则返回其小写字母,否则直接返回c

toupper(c) 跟tolower相反

(3)对字符串的处理

#include<string.h>

extern char *strcat(char *dest,char *src);

用法

#include <string.h>

在C++中,则存在于<cstring>头文件中。

功能

把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。

说明

src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

返回指向dest的指针

strcpy()

strcmp()

strlen()

strlwr()

strlupr()

等等

2.c++中字符串的处理

对于c的兼容#include<cctype>,#include<cstring>

c++语言定义了一个内容丰富的抽象数据类型库,其中string是一种重要的标准库类型,支持可变长字符串,是对内置数组的某种抽象

#include<string>

using std::string;

(1)定义和初始化string对象

string s1; //默认初始化,s1是一个空字符串

string s2=s1; //s2是s1的副本

string s3=“woaini"; //s3是该字符串字面值的副本

string s4(10,'c'); //s4的内容"cccccccccc"

string s2(s1);

string s("woaini");

(2)常用的string对象上的操作

 =,==,!=,<,<=,>,>=,empty(),size(),append(),.......

string s="sunxiao"+"wu";//此语句错误,不能把两个字面值直接相加,c++语言中的字符串字面值不是标准库类型string的对象

(3)string::size_type类型

大多数标准库类型都定义了几种配套类型。这些配套类型体现了与机器无关的特性,它是一个无符号类型的值,能足够存放下任何string对象的大小。size()的返回值

(故如果一条表达式中已经有了size()函数就不要再使用int,避免问题)

(4)#include<cctype>

他他 他

3.boost库中对字符串的处理

boost c++字符串算法库Boost.StringAlgorithms提供了许多字符串操作

字符串的类型可以是std::string,std::wstring,std::basic_string的实例

头文件

#include<boost/algorithm/string.hpp包含了其他的所有头文件

boost::algorithm::to_upper_copy()

boost::algorithm::to_lower_copy()

boost::algorithm::to_upper()

boost::algorithm::to_lower()

boost::algorithm::split()

split的用法:

vector<string> vec;

string str="sunxiaowu,sunxiaoliu,sunxiaoqi,sunxiaoba";

boost::algorithm::split(vec,str,is_any_of(","));//则被切分的结果保存到vec对象中

boost::algorithm命名空间中还有许多对stirng类型对象的处理,十分强大好用,重复造轮子实在是没有多大意思
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: