C进阶系列初始字符串,并能够完成基础

前面我们学习过四种基本数据类型:int、float、double、char,C++还提供了一种字符串的数据类型,关键词为string。

字符(char)与字符串(string)不同,字符由单引号包裹,字符串则由双引号包裹。很多字符串在一起,就可以组成一个字符串,如下图:字符串hello,就是由h、e、l、l、o这五个字符组成。

字符串可以被看做是一个字符数组;所以,数组的语法同样适用于字符串,比如:通过下标获取单个字符。如下图:

声明了一个字符串变量s,并赋值“hello”,第3行是输出字符串里的第一个字符,通过数组名+下标的方式输出。

01字符串初始化

声明字符串的同时,给字符串变量赋值:可以使用等号(=),也可以使用小括号(初始值)赋值;如下代码:变量s是动态赋值;变量s2是将s的值赋值s2;变量s3是将字符串常量“你好,OK”赋值给s3。

当然声明后,如果要修改字符串变量,只能通过等于(=)给变量重新赋值;不能使用小括号。

02如何获取带空格的字符串?

我们使用cin函数,动态获取字符串时,会发现带空格的字符串无法获取,它会从空格处截断,只能得到空格前的部分内容。

比如:输入“nihao”,得到的只有空格前的“ni”。如何解决这一问题呢?

系统提供了一个getline函数,获取一行。其语法是:

getline(cin,字符串变量名);

这样修改代码后,带空格的字符串就可以获取到了。

03如何获取字符串的长度?

系统提供了size()函数,可以获取字符串的实际长度。语法:

字符串变量.size()

注意:空格也算一位。如果字符串中含有汉字,则一个汉字是2个字符的大小;比如:输入“我和你”,其长度就是6,读者可以测试验证结果。

04字符串如何进行大小比较?

字符串也有大小区分,它并不是按照字符串的长短比大小,而是按照对应字符的ASCII值比大小。在C++中,我们可以直接使用、、==等关系运算符比较字符串的大小。比如:

上述案例中,变量s1和s2中第一、二的字符相同,第三个字符h的ASCII小于w的ASCII,所以:s1s2。

05案例应用:字符串

一、倒序(逆序)输出字符串

所谓倒序或逆序,就是从后往前输出字符串的内容。需要结合循环下标实现,这里提供三种解决办法。

第一种:10到12行,字符数组从最后一位(s.size()-1)开始,倒序输出;

第二种:14到16行,字符数组从字符串长度(s.size())开始,倒序输出,需要在循环体部分减1,体现的字符串长度和字符串最后一位元素下标的位置关系;

第三种:18到20行,循环顺序输出,在循环体内,设置下标为:长度-1-I;也就是循环变量为0时,读取的是字符串最后一位的字符并输出。

二、倒序输出所有的小写字符

只需要在循环体里添加一个条件判断语句——在小写字符的区分范围之内即可。

此案例,将循环+条件+数组等知识点,综合应用起来。

06扩展案例

从键盘输入一个长度大于10的字符串,现要求:将字符串中的所有大小写字母都改写成该字母的下一个字母。如:最后一个小写字母z改写成字母a;最后一个大写字母Z改写成A,其他字符依照原有顺序不变。比如:

输入:Abczabcabcabc

输出:Bcdabcdbcdbcd

信息学奥赛课课通(C++)京东好评率99%无理由退换京东配送官方店旗舰店¥63.6购买

其他相关学习内容,可参阅:

C++进阶系列:初识数组?然后完成基础编程任务

C++进阶系列:解决一维数组的排序问题(冒泡排序算法)




转载请注明:http://www.aierlanlan.com/tzrz/3496.html