C++ cin.ignore()的用途是什么

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程