Computer >> Máy Tính >  >> Lập trình >> C ++

Công dụng của cin.ignore () trong C ++ là gì?

Hàm cin.ignore () được sử dụng để bỏ qua hoặc xóa một hoặc nhiều ký tự khỏi bộ đệm đầu vào.

Để hiểu rõ về hàm ignore () đang hoạt động, chúng ta phải thấy một vấn đề và giải pháp của nó được tìm thấy bằng cách sử dụng hàm ignore (). Vấn đề như dưới đây.

Đôi khi chúng ta cần xóa bộ đệm không mong muốn, vì vậy khi đầu vào tiếp theo được lấy, nó sẽ lưu trữ vào vùng chứa mong muốn, nhưng không lưu trong bộ đệm của biến trước đó. Ví dụ, sau khi nhập vào câu lệnh cin, chúng ta cần nhập một mảng hoặc chuỗi ký tự. Vì vậy, chúng ta cần xóa bộ đệm đầu vào, nếu không nó sẽ chiếm bộ đệm của biến trước đó. Bằng cách nhấn phím “Enter” sau lần nhập đầu tiên, vì bộ đệm của biến trước có không gian để chứa dữ liệu mới, chương trình sẽ bỏ qua đầu vào sau của vùng chứa.

Ví dụ

#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;
}

Đầu ra

Enter a number and a string:
8
You have entered:
8

Có hai câu lệnh cin cho số nguyên và chuỗi, nhưng chỉ lấy số. Khi chúng ta nhấn phím enter, nó sẽ bỏ qua hàm getLine () mà không nhận bất kỳ đầu vào nào. Đôi khi nó có thể nhận đầu vào nhưng bên trong bộ đệm của biến số nguyên, vì vậy chúng ta không thể xem chuỗi là đầu ra.

Bây giờ để giải quyết vấn đề này, chúng ta sẽ sử dụng hàm cin.ignore (). Hàm này được sử dụng để bỏ qua các đầu vào lên đến phạm vi nhất định. Nếu chúng ta viết câu lệnh như thế này -

cin.ignore(numeric_limits::max(), ‘\n’)

Sau đó, nó cũng bỏ qua đầu vào bao gồm cả ký tự dòng mới.

Ví dụ

#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;
}

Đầu ra

Enter a number and a string:
4
Hello World
You have entered:
4
Hello World