Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में cin.ignore() का क्या उपयोग है?

cin.ignore() फ़ंक्शन

cin.ignore() फ़ंक्शन इनपुट बफर से एक या अधिक कैरेक्टर्स को इग्नोर या क्लियर करने के लिए उपयोग किया जाता है।

समस्या: इनपुट बफर में बचा हुआ न्यूलाइन

कभी-कभी हमें अवांछित बफर को क्लियर करने की आवश्यकता होती है, ताकि जब अगला इनपुट लिया जाए, तो यह पिछले वेरिएबल के बफर में नहीं बल्कि वांछित कंटेनर में स्टोर हो।

उदाहरण के लिए, cin स्टेटमेंट में प्रवेश करने के बाद, हमें एक कैरेक्टर ऐरे या स्ट्रिंग इनपुट करने की आवश्यकता होती है। इसलिए हमें इनपुट बफर क्लियर करना होगा, अन्यथा यह पिछले वेरिएबल के बफर पर कब्जा कर लेगा। पहले इनपुट के बाद "Enter" कुंजी दबाने पर, चूंकि पिछले वेरिएबल के बफर में नया डेटा रखने की जगह होती है, प्रोग्राम कंटेनर के निम्नलिखित इनपुट को छोड़ देता है।

समस्या प्रदर्शित करने वाला उदाहरण

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int x;
    char str[80];
    
    cout << "Enter a number and a string:\n";
    cin >> x;              // संख्या पढ़ता है, '\n' बफर में छोड़ देता है
    cin.getline(str, 80);  // तुरंत '\n' पढ़ता है, खाली स्ट्रिंग देता है
    
    cout << "You have entered:\n";
    cout << x << endl;
    cout << str << endl;
    return 0;
}

आउटपुट

Enter a number and a string: 8
You have entered:
8
(स्ट्रिंग खाली - getline छोड़ दिया गया)

समाधान: cin.ignore()

इस समस्या को हल करने के लिए, हम cin.ignore() फ़ंक्शन का उपयोग करेंगे। यह फ़ंक्शन दिए गए रेंज तक इनपुट को इग्नोर करने के लिए उपयोग किया जाता है।

सिंटैक्स

cin.ignore(n);                    // n कैरेक्टर्स इग्नोर करें
cin.ignore(n, delim);             // n कैरेक्टर्स या delim तक इग्नोर करें
cin.ignore(numeric_limits<streamsize>::max(), '\n');  // लाइन के अंत तक सब इग्नोर करें

सही उदाहरण

#include <iostream>
#include <ios>      // streamsize के लिए
#include <limits>   // numeric_limits के लिए
using namespace std;

int main() {
    int x;
    char str[80];
    
    cout << "Enter a number and a string:\n";
    cin >> x;
    
    // नई लाइन सहित बफर क्लियर करें
    cin.ignore(numeric_limits<streamsize>::max(), '\n');
    
    cin.getline(str, 80);  // अब स्ट्रिंग सही ढंग से पढ़ता है
    
    cout << "You have entered:\n";
    cout << x << endl;
    cout << str << endl;
    return 0;
}

आउटपुट

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

cin.ignore() के सामान्य उपयोग

उपयोगकोडव्यवहार
सिंगल कैरेक्टर स्किपcin.ignore()1 कैरेक्टर इग्नोर करता है (डिफ़ॉल्ट n=1)
n कैरेक्टर्स स्किपcin.ignore(n)अधिकतम n कैरेक्टर्स इग्नोर करता है
डिलिमीटर तक स्किपcin.ignore(n, '\n')n कैरेक्टर्स या '\n' तक, जो पहले आए
पूरी लाइन क्लियरcin.ignore(numeric_limits<streamsize>::max(), '\n')वर्तमान लाइन के शेष को डिस्कार्ड करता है

std::ws मैनिपुलेटर (वैकल्पिक)

व्हाइटस्पेस (न्यूलाइन सहित) स्किप करने के लिए:

cin >> x;
getline(cin >> ws, str);  // ws अग्रणी व्हाइटस्पेस खाता है
  1. - विंडोज पर C++ के लिए शीर्ष IDE

    बड़े प्रोजेक्ट्स को केवल टेक्स्ट एडिटर्स पर प्रबंधित करना मुश्किल होता है। ऐसे मामलों में IDE का उपयोग करने से आप अधिक उत्पादक और कम निराश होंगे। विभिन्न प्रकार के IDE उपलब्ध हैं और आपको अपनी आवश्यकताओं के अनुरूप सही चुनना चाहिए। यहां विंडोज के लिए सर्वश्रेष्ठ C/C++ IDEs की सूची दी गई है। Visual S

  1. - C++ में const कीवर्ड क्या है?

    हम किसी वेरिएबल को स्थिर घोषित करने के लिए const क्वालिफायर का उपयोग करते हैं। इसका मतलब है कि एक बार वेरिएबल इनिशियलाइज़ हो जाने के बाद हम उसका मान नहीं बदल सकते। const का उपयोग करने का एक बहुत बड़ा लाभ है। उदाहरण के लिए, यदि आपके पास PI के मान जैसा एक स्थिर मान है, तो आप नहीं चाहेंगे कि प्रोग्राम

  1. - PHP में ini_set() का उपयोग क्या है?

    PHP ini_set() फंक्शन का उपयोग करके php.ini में दी गई कुछ सेटिंग्स को मॉडिफाई करने की अनुमति देता है। इस फंक्शन को दो स्ट्रिंग आर्गुमेंट्स की आवश्यकता होती है। पहला आर्गुमेंट उस सेटिंग का नाम होता है जिसे मॉडिफाई करना है और दूसरा आर्गुमेंट वह नया मान होता है जिसे असाइन करना है। पैरामीटर्स var name उ