C++之输入(cin)详解

本文详细解析了C++中的输入操作,包括cin的基本使用,cin.get()与cin.getline()的区别,以及如何处理cin的异常情况和使用cin.ignore()清除缓冲区数据。通过多个案例展示了各种输入函数的特性和应用场景,强调了输入结束条件、空格处理以及缓冲区管理的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、cin:

         输入操作的原理,程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入,这就是例子中为什么会出现输入语句失效的原因! 

         cin输入结束的条件:Enter、Space、Tab。cin对这些结束符的处理:丢弃缓冲区中这些字符。与cin.get()不同。

案例1:

#include <iostream>
using namespace std;
int main() 
{
	int m, n;
	cin >> m;
	cin >> n;
         cout << m << n << endl;
	return 0;
}

测试正常输入:

 

测试异常输入:

            

 

案例2:string的输入

void main()
{	string str1;
	cin >> str1;  //遇到空格的地方就停止字符串的读取输入   
	cout << str1 << endl;

	cin.get();
	getline(cin, str1);
	cout << str1 << endl;
}

测试:

      

        可以看出cin是遇到“空格”就停止读取输入,并且cin是从第一个“非空格字符”开始读取;

        而getline则是直接从第一个字符开始读取(无论是不是空格,都要读入),并且getline是遇到“回车”停止读入;

        当把上述代码中 的cin.get()去掉,则输入“123”----》回车  后,getline直接读取“回车”,运行完毕!

 

案例3:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值