不常见知识点汇总

在这里插入图片描述

1.关于输入流(cin)

问题描述:

int input = 0;
cin >> input;
while (cin.fail())
{
	cin.clear();
	cin.ignore(numeric_limits<streamsize>::max(), '\n');
	cin>>input;
}
cout<<"输入的是:"<<input<<endl;

实现结果是:
在这里插入图片描述
只有输入整型数字才可输出,输入其他类型时无用。

1.1 cin.fail()

void test03()
{
	int input = 0;
	cin >> input;
	if (cin.fail())//输入错误时为真
	{
		cout << "error" << endl;
	}
	cout << "输入的是:" << input << endl;

}

在这里插入图片描述在这里插入图片描述

1.2 cin.clear()

  1. 含义:这个函数用于重置cin(即istream对象)的内部状态标志。输入流在遇到错误(如类型不匹配、输入流结束等)时,会设置特定的错误标志导致后续的输入操作无法进行。clear()函数将这些错误标志清除,使流重新变得可用。
  2. 本质:clear()函数操作的是流的内部状态,它不影响流中的数据。
  3. 注意:有时候人们可能会误以为clear()会清除流中的数据,但实际上它只是重置状态标志。

1.3 cin.ignore()

cin.ignore()函数中有两个参数,分别为数值型的a 和 字符型的 ch 。

cin.ignore( a, ch ):它表示从输入流 cin中提取字符,提取的字符被忽略,不被使用。而每抛弃一个字符,它都要进行计数和比较字符:如果计数值达到 a 或者被抛弃的字符是 ch,则cin.ignore() 函数执行终止;否则,它继续等待。

题中:
cin.ignor:e(numeric_limits::max(), ‘\n’)

解析:

  • numeric_limits::max()表示最大可能的streamsize值,这里用作忽略的字符数量上限。
  • '\n’表示直到遇到换行符才停止忽略。

函数本质:ignore()函数的本质是从输入流中读取并丢弃一定数量的字符,直到达到指定的数量或遇到第二个参数指定的终止字符。

注意:可能会有误解认为ignore()会影响后续输入的位置,但实际上它只是简单地跳过当前的一些输入。

随时补充!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值