C ++中cin.ignore()的用途是什么?
cin.ignore()函数用于忽略或清除输入缓冲区中的一个或多个字符。
为了使想法ignore()
起作用,我们必须看到一个问题,并使用该ignore()
函数找到了解决方案。问题如下。
有时我们需要清除不需要的缓冲区,因此当接受下一个输入时,它将存储在所需的容器中,而不是先前变量的缓冲区中。例如,输入cin语句后,我们需要输入一个字符数组或字符串。因此我们需要清除输入缓冲区,否则它将占用先前变量的缓冲区。在第一个输入之后按“Enter”键,由于前一个变量的缓冲区有空间容纳新数据,因此程序将跳过随后的容器输入。
示例
#include<iostream> #include<vector> using namespace std; main() { int x; char str[80]; cout << "Enter a number and a string:\n"; cin >> x; cin.getline(str,80); //take a string cout << "You have entered:\n"; cout << x << endl; cout << str << endl; }
输出结果
Enter a number and a string: 8 You have entered: 8
对于整数和字符串,有两个cin语句,但是仅采用数字。当我们按回车键时,它将跳过该getLine()
方法而不进行任何输入。有时它可以接受输入,但可以在整数变量的缓冲区内,因此我们无法将字符串视为输出。
现在要解决此问题,我们将使用cin.ignore()函数。此功能用于忽略高达给定范围的输入。如果我们这样写语句-
cin.ignore(numeric_limits::max(), ‘\n’)
然后,它也忽略包括换行符的输入。
示例
#include<iostream> #include<ios> //used to get stream size #include<limits> //used to get numeric limits using namespace std; main() { int x; char str[80]; cout << "Enter a number and a string:\n"; cin >> x; cin.ignore(numeric_limits<streamsize>::max(), '\n'); //clear buffer before taking new line cin.getline(str,80); //take a string cout << "You have entered:\n"; cout << x << endl; cout << str << endl; }
输出结果
Enter a number and a string: 4 Hello World You have entered: 4 Hello World