C语言与C++中关于字符串使用的比较_第1页
C语言与C++中关于字符串使用的比较_第2页
C语言与C++中关于字符串使用的比较_第3页
C语言与C++中关于字符串使用的比较_第4页
C语言与C++中关于字符串使用的比较_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第C语言与C++中关于字符串使用的比较目录相似处字符串字面值C++标准库string类型

相似处

C++作为C的进阶版,可以调用C的库函数。C++标准库包括了C标准库,C++头文件cctype其实就利用了C的ctype.h中的库函数。在C++中使用C的头文件都会在前面加c,比如C的name.h在C++就是cname。

为了与C兼容,C++有字符串字面值,也就是类似helloworld这种,但是这和string类型不一样,视编译器而定string最后不一定有\0。

字符串字面值

字符串字面值是一串常量字符,采用双引号括起来的零个或者多个字符表示,不可打印字符表示成相对应的转义字符:

HelloWorld//simplestringliteral

//emptystringliteral

\nCC\toptions\t//stringliteralusingnewlinesandtabs

为了兼容C语言,C++所有字符串字面值都由编译器自动在末尾添加一个空字符,和C语言一样:

A//singlequote:characterliteral

A//doublequote:characterstringliteral

表示包含字母A和空字符两个字符的字符串。

表示包含字母A和空字符两个字符的字符串。

也存在宽字符和宽字符串字面值,如:

La

Lawidestringliteral

宽字符串字面值是一串常量宽字符串,同样以宽空字符结束。

两个相邻的仅由空格、制表符或换行符分开的字符串字面值(宽字符串字面值),可连接成一个新字符串字面值,使得多行书写长字符串字面值变得简单。

std::coutamulti-line

stringliteral

usingconcatenation

std::endl;

执行这条语句将会输出:

amulti-linestringliteralusingconcatenation

但如果连接字符串字面值和宽字符串字面值,将会出错:

std::coutamulti-line

Lstringliteral

usingconcatenation

std::endl;

其结果将是未定义的(undefined)。

C++结构比较自由,甚至可以在单词中断行:

std::cou\

tHist\

d::endl;

等价于:

std::coutHistd::endl;

可以用这个特性编写长字符串字面值:

std::coutamulti-line\

stringliteral\

usingabackslash

std::endl;

return0;

使用反斜线符号时这个符号必须是该行的尾字符,不允许后面有任何注释或者空格。

C++标准库string类型

string类型初始化

strings1;//默认构造函数,s1为空串

strings2(s1);//将s2初始化为s1的副本

strings3("value");//将s3初始化为字符串字面值副本

strings4(n,'c');//将s4初始化为字符'c'的n个副本

String对象的读写

一个有用的stringIO操作是getline,getline函数从输入流的下一行开始读取,保存读取的内容到string中,但不包括换行符,只要遇到换行符,哪怕是该行第一个字符,getline也将停止读入并返回。

由于getline返回时丢弃换行符,换行符将不会存储在string对象中。下面给出一个使用getline读取字符串的例子:

intmain()

stringline;

while(getline(cin,line))

coutlineendl;

return0;

String对象的操作

s.empty()//s为空串返回true,否则返回false

s.size()//返回s中字符个数

s[n]//返回s中位置为n的字符,位置从0开始计数

s1+s2//将s1和s2连接成一个新字符串

s1=s2//将s1替换成s2副本

v1==v2//比较v1和v2,相等返回true,否则返回false

!=,,=,,=//字符串比较

从逻辑上讲,size函数应该返回整型,然而事实上返回的是string::size_type类型,为避免溢出,在代码编写时最好用string::size_type。

关系操作符的比较规则和C的strcmp一样不赘述。

和字符串字面值的连接

上述s1+s2连接的是字符串,字符串也是可以和字符串字面值连接的。

由于编译器不同,string类型变量结尾的\0时有时无,但是有一点毫无疑问,两个字符串字面值是不能连接的。

strings1="hello";

strings2="world";

strings3=s1+"hi";

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论