C++学习笔记之数字输入及错误处理

数字循环输入及错误解决办法

我们在输入一些数字的时候通常当输入的不是相应的类型的时候,会输入错误如
int a[5]={0};
int i=0;
while(i<5)
{
cin>>a[i];
i++;
}
当我们输入的是一个字符的时候,必然会输入错误,此时 cin 返回错误,不做处理,程序会停止.若我们在此之前输入了几个有效数据,我们想得到这几个数据怎么办呢?

//首先我们能让程序能够收到有效的数据并打印出来,下面为示例
int arr[5];
int i = 0;
cout << "输入第1个数:";
while (i<5 && (cin >> arr[i]))
{
	if (++i<5)
	cout << "输入第" << i + 1 << "个数:";
}
//******************错误处理**********************
if(!cin)
{
	cin.clear();//重置cin,使我们能够继续进行
	cin.get();//去读取我们输入的错误字符
}
cin.get();//等待我们输入ENTER
//***********************************************

for(int j=0;j<i;j++)
	cout<<"第"<<j+1<<"个数:"<<arr[i]<<endl;
cout<<endl;

输入如下:此时若没有错误处理,必然直接程序闪退。
在这里插入图片描述
错误处理后如下
在这里插入图片描述
我们在输入错误数据后删除原来的错误,想再重新输入这个值怎么做呢?就像上面虽然能接收了前四个数据,但我们想要完整的5个数。

while (i < 5)
	{
		cout << "输入第"<<i+1<<"个数:";
		//************处理函数***************
		while (!(cin >> arr[i]))
		{
			cin.clear();
			while (cin.get() != '\n')
				continue;//这两行是来读取错误字符,知道读到换行符为止
			cout << "重新输入数字:" ;
		}
		//**********************************
		i++;
	}

	for (int j = 0; j<i; j++)
		cout << "第" << j + 1 << "个数:" << arr[j] << endl;

效果如下:
在这里插入图片描述

发布了5 篇原创文章 · 获赞 5 · 访问量 152

猜你喜欢

转载自blog.csdn.net/Phil0624/article/details/104309594