博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c/c++/boost字符串的学习
阅读量:4213 次
发布时间:2019-05-26

本文共 2241 字,大约阅读时间需要 7 分钟。

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是否是阿拉伯数字09,若是则返回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类型对象的处理,十分强大好用,重复造轮子实在是没有多大意思

转载地址:http://rcumi.baihongyu.com/

你可能感兴趣的文章
第一次炒股小记
查看>>
《redis in action》ZSet相关命令
查看>>
《redis in action》redis发布订阅
查看>>
《redis in action》sort排序命令
查看>>
《redis in action》redis事务
查看>>
《redis in action》key的自动过期
查看>>
《redis in action》redis持久化简介
查看>>
Oracle RAC Failover 详解
查看>>
批处理 自动修改 IP 地址
查看>>
Oracle RAC LoadBalance
查看>>
v$sql,v$sqlarea,v$sqltext 和 v$sql_plan 说明
查看>>
ORA-31623 When Submitting a Datapump Job [ID 308388.1]
查看>>
Oracle SYSAUX 表空间 说明
查看>>
RAC 安装patch 后启动实例 报错 ORA-00439 feature not enabled- Real Application Clusters 解决方法
查看>>
On RAC, expdp Removes the Service Name [ID 1269319.1]
查看>>
Important Changes to Oracle Database Patch Sets Starting With 11.2.0.2 [ID 1189783.1]
查看>>
Oracle RAC 平台下 Patch 安装与卸载 步骤
查看>>
Oracle Database 11gR1 和 10gR2 ASM Best Practices 说明文档
查看>>
ASM Concepts Quick Overview [ID 1086199.1]
查看>>
PowerDesigner 业务处理模型( BPM ) 说明
查看>>