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

以上是 C ++中cin.ignore()的用途是什么? 的全部内容, 来源链接: utcz.com/z/354338.html

回到顶部