字符串

字符串:储存在内存的连续字节中的一系列字符。C++处理字符串的方式分为两种:

1、C-风格字符串;

C-风格字符串的特殊性质:以空字符(null character)结尾,空字符被写作'\0',其ASCII码为0,用来标记字符串的结尾。

(1)char数组——将字符串存储在char数组中,其中每个字符都位于自己的数组元素中。

例:

char dog[8]={'b','e','a','u','x',' ','I','I'};//not a string
char cat[8]={'f','a','t','e','s','s','a','\0'};//a string
上述两个数组都是char数组,但只有第二个才是字符串。


字符串常量(字符串字面值)——使用一个用引号括起的字符串。用引号括起的字符串隐式地包含结尾的空字符,不用显示的包括。此外,各种C++输入工具通过键盘输入,将字符串读入到char数组是,将自动加上结尾的空字符。
例:

char bird[11]="Mr.Cheeps";//the \0 is understood
char fish[]="Bubbles";//let the compiler count


C++对字符串长度没有限制,但应确保数组足够大,能够存储字符串包括空字符在内的所有字符。因此让编译器计算元素数目更为安全。


注意:字符串常量(使用双引号)不能与字符常量(使用单引号)互换:'S'表示字符常量,而"s"表示字符S和\0组成的字符串。


C++允许拼接字符创字面值,即将两个用引号括起的字符串合并为一个,任何两个由空白(空格、制表符和换行符)分割的字符串常量都将自动拼接成一个。拼接式不会再被连接的字符串之间添加空格,第二个字符串的第一个字符将紧跟在第一个字符串的最后一个字符(不考虑\0)后面,第一个字符串中的\0字符将被第二个字符串中第一个字符取代。


sizeof运算符指出整个数组的长度,strlen()函数返回的是存储在数组中的字符串的长度,而不是数组本身的长度,并且,strlen()只计算可见的字符,忽略空字符。

const int size=15;
char name[size]="C++owboy";
strlen(name);//8
sizeof(name);//15


2、string类——提供了将字符串作为一种数据类型的表示方法。

使用string类,需包含头文件string,并且由于string类位于名称空间std中,因此需要using指令或者使用std::using引用。

string隐藏了字符串的数组性质,使得能够像处理普通变量那样处理字符串。

string可以使用数组表示法来访问存储在string对象中的字符。

类设计让程序能够自动处理 string的大小。


string类某些操作比使用数组更简单:

(1)不能将一个数组赋给另一个数组,但可以将一个string对象赋给另一个string对象。

例:

char charr1[20];
char charr2[20]="jaguar";
string str1;
string str2="panther";
charr1=charr2;//invalid
str1=str2;//valid

(2)string类简化了字符串合并操作,可以直接使用运算符+将两个string对象合并起来,还可以使用运算符+=将字符串附加到string对象的末尾。

例:

string str1;
string str2;
string str3;
str3=str1+str2;//assign str3 the joined strings
str1+=str2;//add str2 to the end of str1




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值