2011-09-15 9 views
17

पर एकाधिक इनपुट मुझे कोई फायदा नहीं हुआ है, और मुझे डर है कि यह इतना आसान सवाल हो सकता है कि कोई भी इससे पूछने की हिम्मत नहीं करता है।एक लाइन

क्या एक लाइन में मानक इनपुट से कई चीजें इनपुट कर सकती हैं? मेरा मतलब है इस:

float a, b; 
char c; 

// It is safe to assume a, b, c will be in float, float, char form? 
cin >> a >> b >> c; 
+3

कुछ प्रश्न पूछने की आवश्यकता नहीं है। जब आप इसे आजमाते हैं तो क्या होता है? – outis

+0

मैं वर्तमान में ऐसे स्थान पर नहीं हूं जहां मेरे पास इसका प्रयास करने का साधन है। – Joshua

+3

@ जोशुआ आपके पास [इंटरनेट] नहीं है (http://ideone.com/) [access] (http://codepad.org/)? –

उत्तर

21

हाँ, आप cin से इनपुट से अधिक आइटम, वास्तव में सिंटेक्स के उपयोग से आप का वर्णन कर सकते हैं। परिणाम अनिवार्य रूप से समान है:

cin >> a; 
cin >> b; 
cin >> c; 

यह "ऑपरेटर चेनिंग" नामक तकनीक के कारण है।

प्रत्येक कॉल operator>>(istream&, T) (जहां T कुछ मनमानी प्रकार है) इसके पहले तर्क का संदर्भ देता है। तो cin >> acin देता है, जिसका उपयोग (cin>>a)>>b और इसी तरह के रूप में किया जा सकता है।

ध्यान दें कि operator>>(istream&, T) पर प्रत्येक कॉल पहले सभी व्हाइटस्पेस वर्णों का उपभोग करता है, फिर इनपुट ऑपरेशन को पूरा करने के लिए आवश्यक कई पात्रों के रूप में, पहले अगले व्हाइटस्पेस वर्ण, अमान्य चरित्र या ईओएफ तक (लेकिन शामिल नहीं) तक पहुंचने की आवश्यकता होती है।

+0

धन्यवाद। मैं ऐसा सोच रहा था, लेकिन मैं वास्तव में इसका परीक्षण नहीं कर सका जहां मैं हूं, और मैं ज्ञान के लिए खुजली कर रहा था। – Joshua

+0

मुझे अग्रणी व्हाइटस्पेस चीज़ के बारे में पता था, लेकिन शेष नहीं। साफ! – Joshua

+1

ध्यान दें कि 'skipws' ध्वज सेट होने पर व्हाइटस्पेस वर्ण केवल तभी खाए जाएंगे। –

5

हाँ, आप कर सकते हैं।

cplusplus.com से:

इन कार्यों ऑपरेटर ओवरलोडिंग कर रहे हैं क्योंकि काम करता है, हमेशा की तरह, जिसमें वे कहलाते हैं:

strm >> variable; 

कहाँ strm एक IStream वस्तु और variable के पहचानकर्ता है किसी भी प्रकार का ऑब्जेक्ट सही पैरामीटर के रूप में समर्थित है।

strm >> variable1 >> variable2 >> variable3; //... 

जो एक ही वस्तु strm से लगातार निष्कर्षण प्रदर्शन के रूप में ही है: यह भी रूप में निकासी के संचालन का एक उत्तराधिकार कॉल करने के लिए संभव है।

cin के साथ बस strm को प्रतिस्थापित करें।