cin.ignore() ফাংশনটি ব্যবহার করা হয় যা ইনপুট বাফার থেকে এক বা একাধিক অক্ষর উপেক্ষা বা সাফ করতে ব্যবহৃত হয়।
ignore() কাজ করছে সম্পর্কে ধারণা পেতে, আমাদের একটি সমস্যা দেখতে হবে, এবং এর সমাধানটি ignore() ফাংশন ব্যবহার করে পাওয়া যায়। সমস্যাটি নিচের মত।
কখনও কখনও আমাদের অবাঞ্ছিত বাফারটি সাফ করতে হবে, তাই যখন পরবর্তী ইনপুট নেওয়া হয়, তখন এটি পছন্দসই পাত্রে সঞ্চয় করে, কিন্তু পূর্ববর্তী ভেরিয়েবলের বাফারে নয়। উদাহরণস্বরূপ, cin স্টেটমেন্টে প্রবেশ করার পরে, আমাদের একটি অক্ষর অ্যারে বা স্ট্রিং ইনপুট করতে হবে। তাই আমাদের ইনপুট বাফারটি সাফ করতে হবে, অন্যথায় এটি পূর্ববর্তী ভেরিয়েবলের বাফারটি দখল করবে। প্রথম ইনপুটের পরে "এন্টার" কী টিপে, যেহেতু পূর্ববর্তী ভেরিয়েবলের বাফারে নতুন ডেটা রাখার জন্য স্থান রয়েছে, প্রোগ্রামটি কন্টেইনারের নিম্নলিখিত ইনপুটটি এড়িয়ে যায়৷
উদাহরণ
#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