C++ 输入总结

学了编程4年了,输入输出一直都在用,但一直都处在模模糊糊的状态。每次使用是都得现查,今天把这个好好总结下,方便以后使用。

这里只关注实际的使用,理论上暂且不管。

这儿主要关注以下几个函数:
(1)、cin(这个也就暂且当它是个函数吧)
(2)、get
(3)、getline
(4)、gets
(5)、getchar

一、cin
这个cin是istream对象,从标准输入中读取数据。要注意的是有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数 直接从输入缓冲区中取数据它基本的读取规则是:cin是遇到回车停止输入,按照空格输出的。空格、回车等会被丢弃(这些还在缓冲区中,下次若用cin会自动丢弃),下次又会读取流中剩下的内容。

所以说,在读取字符串的时候一般使用cin>>string; 但是就像上面说的使用cin>>是不能读取带有 空格、回车之类的字符串的。

二、get
get可以读取包含空格符、回车符、制表符在内的几乎所有字符,它的结束条件是回车。它的使用主要包括以下两部分
1、读入单个字符:读入单个任意字符可以使用cin.get(ch)和ch=cin.get()。基本上使用区别不大,具体的比较见下图。
cin.get()与cin.get(ch区别)

2、读入多个任意字符:常用的有以下两种

    (1)、cin.get(数组名,接收字符数目) //默认截止字符换行符
    (2)、cin.get(数组名,接收字符数目,截至字符)

注意:以上两个函数在遇到截至字符时,本次读取完毕,但是截止字符依然保持在流中。所以如果想要读取一串带回车符的字符串,使用第一种方式是不行的,因为它把回车符当成了截止字符,会自动停止读入,这样的话就只能采取第二种方式了。

三、getline
对于getline来说,这里包含两部分。
1、cin的成员函数即:cin.getline:这种方式主要有两种用法:

(1)、cin.getline(数组名,接收字符数目) //默认截止字符换行符
(2)、cin.getline(数组名,接收字符数目,截至字符)

与上面的get读入多个字节函数类似。但是需要注意的是getline()函数会自动丢弃换行符等分界符。

2、string的成员函数即:getline()。与上面的类似,这种方式也主要有两种用法:

 (1)、getline(cin,string类型)
 (2)、getline(cin,string类型,截止字符)

基本用法和上一种cin成员函数方式差不多,不同的是接收的时候一个是数组,一个是string类型。

note:

这里要稍微注意,有的时候刷题需要获取一行,而且要与cin>> 一起连用,要注意一点的是cin>> 会在输入缓冲区中保留回车符(一般咱输入都会输入回车符),这个时候如果后面直接是getline的函数,就会首先读取这个回车符,而不是我们想要的接下来的数据
。所以一般这种情况,我们都会使用cin.get() 跳过这个回车符。

四、gets

gets(s);

其中s为字符串变量(字符串数组名或字符串指针)。

但是这个函数没有内存检查机制,在C11中已经删除,所以不推荐使用。

五、getchar
getchar()接受一个字符输入,包含空格,遇到回车停止。和cin.get()接收一个字符差不多。不过不能接收回车符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值