Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

การใช้ cin.ignore () ใน C ++ คืออะไร?


ฟังก์ชัน cin.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 สองชุดสำหรับจำนวนเต็มและสตริง แต่ใช้เฉพาะตัวเลขเท่านั้น เมื่อเรากดแป้น Enter มันจะข้ามฟังก์ชัน 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