C++输入输出的关键字:getline、get

1.cout.put():是一个重要的C++ OOP概念,可以代替“<<”操作符。

char a = 'M';
cout << a;
cout.put(a);

输出结果相同。


2.getline()

getline()函数读取整行,它使用通过回车键输入的换行符来确定输入结尾。

可以使用cin.getline()来调用这种方法。

getline()有两个参数,第一个参数是用来存储输入行的数组的名称,第二个参数是要读取字符数。如果这个字符数为20,则函数最多读取19个字符,余下的空间用于存储自动在结尾处添加的空字符。

getline()成员函数在读取制定数目的字符或遇到换行符时停止读取。如:

const int Size = 20;
char name[Size];
cin.getline(name, Size);


3.get()

cin.get面向行的输入。get()有几种变体,其中一种变体的工作方式与getline()类似,他们接受的参数相同,解释参数的方式也相同,并都是读取到行尾。

get()不再读取并丢弃换行符而是将其保留在输入队列中。假设两次调用get():

cin.get(name, Size);
cin.get(dessert, Size);

由于第一次调用后,换行符将留在输入队列中,因此第二次调用时看到的第一个字符便是换行符。因此get()认为已到达行尾,而没有发现任何可读取的内容。

get()有另一种变体。使用不带任何参数的cin.get()调用可读取下一个字符(即使是换行符),因此可以用来处理换行符,为读取下一行输入做好准备。也就是说可以采用如下方式:

cin.get(name, Size);
cin.get();
cin.get(dessert, Size);


get()另一种使用方式是将两个类成员函数拼接起来如下所示:

cin.get(name, Size).get();


之所以这样做是因为cin.get(name, Size)返回一个cin对象,该对象随后将被用来调用get()函数。同样下面的语句

cin.getline(name1,Size).getline(name2,Size);

将把输入中连续的两行分别读入到数组name1和name2中,其效果与两次调用cin.getline()相同。

示例代码:

#include <iostream>
#include <climits>
using namespace std;

int main()
{
        const int TESTSIZE = 20;
	char name[TESTSIZE];
	char dessert[TESTSIZE];

	cout << "Enter Your Name:" << endl;
	cin.get(name, TESTSIZE).get();
	cout << "Enter Your Favorite Dessert:\n";
	cin.get(dessert, TESTSIZE).get();
	cout << name << " - " << dessert << endl;

	return 0;
}


运行如图所示:


将程序cin.get(name, TESTSIZE).get();中get()去掉,运行如下:

第二次无法输入。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值