C++学习

字符串是存储在内存的连续字节中的一系列字符。

C++中定义字符串有两种方式:第一种是来自C语言,称为C风格的字符串;第二种是利用string类来定义。

 

第一种方法:

        一种是逐个字符给字符数组复制,但是最后一个元素要为'/0',否则它只能是字符,而不是字符串。char cat[5] = {'f', 'a', 't', 's', '/0'}; 如果用cout输出cat的话将会输出一些意想不到的字符,这是因为cout不是在字符数组结束的地方停止输出,而是直到遇到'/0'才会停止输出,而内存中有很多'/0',所以,它很快就会停止输出,而且会输出一些奇怪的字符(字符数组后面的内存中原来存在的字符)。

        另一种是直接将一个字符串赋给字符数组,如char fish[5] = "fats"; 值得注意的是"fats"表示的是字符串所在的内存地址,在它的后面不用加'/0',它自己会自动加。

 

第二种方法:string类来定义字符串;直接声明就可以定义一个字符串,如 string str1。它的优点是可以自动调整字符串的长度,不会出现超出长度的局限。


它和用字符数组定义的字符串有一定的相同点:都可以用数组下标的方法来指定字符串中的字符;

                                        都可以用cin、cout来输入和输出字符串。
但是它们也有区别:拼接字符串和字符串赋值:char字符数组利用函数strcat、strcpy来实现,char* strcpy(char* to, char* 

                                    from),  char* strcat(char* to, char* from);string类直接采用变量赋值和"+"操作符

                                    来实现,如 string str1, str2,str3; str1 = str2; str3 = str1 + str2;

                                    当给字符串赋值为一行字符串而不是一个单词:字符数组采用,cin.getline或者cin.get;

                                    string类采用getline(cin, str1);
                                    初始化的区别:初始化采用"="操作符,其他的时候只能采用函数strcpy或者strncpy来

                                    给数组赋值字符串,字符数组如果没有初始化,它的内容为原来内存中的内容;string

                                    类则不同,没有初始化它的内容为空,长度为0。

 

        在这里再重申一下cin的一些用法:为一个变量输入值时,cin把回车值留在了输入队列,如果用cin.get和cin.getline时,则下一个变量不会有值输入,而是读取了回车值,可以在cin.get和cin.getline前面加上一个cin.get()或者getchar()即可;如果是读取一个单词或者一个整数则没有影响,直接用cin即可!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值