在ch4的作业中暴露出了我不懂的一些问题,主要是和String有关的定义和头文件以及和get有关的函数。
String
在C++中如果想定义字符串型,即String a;则需要用到头文件<string>或<string.h>
有些人会问,这两个有什么差别呢?
其实和<iostream>与<iostream.h>类似,带.h的如<iostream.h>、<string.h>是原先用于C语言的头文件,而不带.h的<iostream>、<string>自然是C++的头文件。
由于C++兼容C,所以两个头文件都是可以被识别并使用的,但是我亲测,还是建议大家用C++的不带.h的头文件。
为什么呢?当然不止是为了跟上时代的步伐,还有更加实际的好处。
由于C语言中没有引入名命空间std,所以其中的标识符如<<、>>是不会被识别的。
也就是说,如果你只用了<string.h>,那么没事,可以成功定义,string a;没问题。但是你想要输入输出就会麻烦点了,如果直接cin>>a,就会报错,并提示没有匹配的运算符。
但神奇的事情在于,<iostream>可以看成<iostream.h>的升级版,但是<string>和<string.h>就不行了。
因为在C++推出之前,C的标准库里碰巧也已经有一个名字叫做“string.h”的头文件。这个头文件跟C++的string类半点关系也没有,所以<string>并非<string.h>的“升级版本”,他们是毫无关系的两个头文件。
(引用:http://www.cnblogs.com/Cmpl/archive/2012/01/01/2309710.html)
get函数
1、cin:作为最基本的输入方法,不多说。
1、cin.get():可以用来接收字符,通常用于循环条件中读取各种字符。ch=cin.get()或者cin.get(ch)都可以将字符存入ch变量中。
2、cin.getline():接受一个字符串,可以接收空格并输出。
3、getline():接受一个字符串,可以接收空格并输出。
getline()和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数。
4、gets():需包含<string>。接受一个字符串,可以接收空格并输出,但是读到换行符'
会将其转换为' '并停止读取,也就是说只能读取一行数据。一般传入数组
1 2 char str[20] = "