C++中输入方式总结:cin>>、cin.get()、cin.getline()、getline()、gets()和getchar()(附split的实现)

本文介绍了C++中几种常用的输入方式,包括cin>>、cin.get()的不同用法,cin.getline()、getline()的使用细节,以及如何通过stringstream和getline()实现字符串分割函数split。特别强调了缓冲区管理和结束符处理的问题,以及避免使用C库中的gets()和getchar()函数。
摘要由CSDN通过智能技术生成

2020年7月28日 周二 天气晴 【不悲叹过去,不荒废现在,不惧怕未来】



1. 简单介绍输入缓冲区

程序的输入都建有一个缓冲区,即输入缓冲区。每次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入。

举个栗子:

void input_test()
{
   
	string str;
	cout<<"cin的缓冲区测试:"<<endl;
	cin>>str;
	cout<<str<<endl;
	cin>>str;
	cout<<str<<endl;
}

在这里插入图片描述
由于cin在遇到空格时就会停止输入,所以如果在第一次输入时,利用空格隔开两个字符串,那么cin在第一次取的时候,只会读取前一个字符串,到空格结束,此时缓冲区还保留着前面输入的第二个字符串,因此第二次cin就会直接从缓冲区取残留数据,而不会请求输入。

如果要解决这个问题,可以在第二次调用 cin>>str 之前通过cin.sync()来清空输入缓冲区,代码如下:

void input_test()
{
   
	string str;
	cout<<"cin的缓冲区测试:"<<endl;
	cin>>str;
	cin.sync();
	cout<<str<<endl;
	cin>>str;
	cout<<str<<endl<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值