目录
- 1.关于输入流(cin)
- 1.1 cin.fail()
- 1.2 cin.clear()
- 1.3 cin.ignore()
- `随时补充!!!`
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()
- 含义:这个函数用于重置cin(即istream对象)的内部状态标志。输入流在遇到错误(如类型不匹配、输入流结束等)时,会设置特定的错误标志,导致后续的输入操作无法进行。clear()函数将这些错误标志清除,使流重新变得可用。
- 本质:clear()函数操作的是流的内部状态,它不影响流中的数据。
- 注意:有时候人们可能会误以为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()会影响后续输入的位置,但实际上它只是简单地跳过当前的一些输入。