String和get

在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>。接受一个字符串,可以接收空格并输出,但是读到换行符'\n会将其转换为'\0'并停止读取,也就是说只能读取一行数据。一般传入数组

1     
2     char str[20] = "\0";  //字符数组初始化\0
3 
4     gets(str);        //输入“i love you”,
5 
6     printf("%s\n", str);      //输出“i love you”
View Code

5、getchar():接受一个字符,需包含<string>、<iostream>

getchar()是C语言的函数,C++也可以兼容,但是建议少用或不用。

 

posted on 2018-11-02 17:10 BlackDn 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/luoyang0515/p/9897300.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值