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

एक स्वरूपित निष्कर्षण के बाद std::getline() इनपुट क्यों छोड़ता है?

कुछ स्वरूपित निष्कर्षण के बाद std::getline() इनपुट छोड़ देता है। हम इस त्रुटि को निम्नलिखित कोड से आसानी से जांच सकते हैं -

उदाहरण कोड

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

int main(){
   string name;
   string city;

   if (cin >> name && getline(cin, city)){
      cout << "Your name " << name << " and city " << city;
   }
}

आउटपुट

Amal
Your name Amal and city

हम देख सकते हैं कि प्रोग्राम दूसरा इनपुट नहीं लेता है। कभी-कभी यह दूसरा इनपुट ले सकता है लेकिन आउटपुट में यह केवल पहला इनपुट दिखाएगा। अब सवाल यह है कि यह ऐसा व्यवहार क्यों कर रहा है?

इस समस्या का मुख्य कारण यह है कि जब हम पहली स्ट्रिंग लिख रहे होते हैं, तब हम एंटर या रिटर्न बटन दबा रहे होते हैं। जब एंटर या रिटर्न दबाया जाता है, तो यह वर्तमान लाइन के बाद '\ n' वर्ण सम्मिलित करता है। यह चरित्र समस्या पैदा कर रहा है। यह स्ट्रिंग के अगले भाग को अनदेखा कर रहा है।

यदि नाम "अमल" है, तो आंतरिक रूप से इसे "अमल \ n" मिल रहा है। इस समस्या को दूर करने के लिए एक विकल्प पहले निष्कर्षण के बाद std::cin.ignore() को कॉल करना है। फिर यह अगले उपलब्ध चरित्र को त्याग देगा, इसलिए यह ठीक काम करेगा।


  1. C++ वर्ग के नाम के बाद अर्धविराम क्या करता है?

    यदि आपके पास − . जैसे कथन हैं Class Person; यह आगे की घोषणा है। यह निम्नलिखित कोड को बताता है कि व्यक्ति नाम के साथ कक्षाएं हैं। यह संकलक को संतुष्ट करता है जब वह इन नामों का उपयोग देखता है। बाद में लिंकर को कक्षाओं की परिभाषा मिल जाएगी।

  1. सी ++ में 'नेमस्पेस एसटीडी का उपयोग' का क्या अर्थ है?

    एक ऐसी स्थिति पर विचार करें, जब एक ही कक्षा में एक ही नाम के दो व्यक्ति हों, पीयूष। जब भी हमें उन्हें अलग करने की आवश्यकता होती है, तो निश्चित रूप से हमें उनके नाम के साथ कुछ अतिरिक्त जानकारी का उपयोग करना होगा, जैसे कि या तो क्षेत्र, यदि वे एक अलग क्षेत्र में रहते हैं या उनके माता या पिता का नाम, आ

  1. 0 पारित होने पर PHP का in_array सत्य क्यों लौटता है?

    In_array ट्रू लौटने का कारण स्ट्रिंग-टू-नंबर रूपांतरण हो सकता है। जब एक स्ट्रिंग को फ़ंक्शन में पास किया जाता है, तो यह 0 देता है, जो कि वह मान है जिसे खोजने की आवश्यकता है। जब तत्वों की तुलना की जाती है तो PHP ढीली बाजीगरी का उपयोग करता है, अर्थात ===के बजाय ==का उपयोग करता है। इसलिए, उनके मूल्यों