हर बार जब मैं सी ++ कोड लाइन की एक त्वरित टुकड़ादो अलग-अलग गेटलाइन() फ़ंक्शन क्यों हैं (यदि वास्तव में हैं)?
std::string s;
cin >> s;
मैं अपने आप को शाप क्योंकि मैं भूल गया यह एक पूरी लाइन हो रही के बजाय खाली स्थान के पर बंद हो जाता है।
फिर, getline
याद पर, मैं हमेशा उलझन में दो किस्मों के रूप में बन:
std::string s;
getline (std::cin, s);
और:
char cs[256];
std::cin.getline (cs, sizeof (cs));
वहाँ वास्तव में इन दोनों के डेटा प्रकार के अलावा अन्य के बीच एक अंतर है?
ऐसा लगता है कि सी ++ तरीका पूर्व होना चाहिए। मैं किस परिस्थितियों में बाद के लोगों का उपयोग करूंगा, बशर्ते कि मुझे संभवत: नल-टर्मिनेटेड वर्ण सरणी के वास्तविक तारों का उपयोग करना चाहिए?
और, क्योंकि इनपुट वास्तव में इनपुट स्ट्रीम का दायरा होना चाहिए, istream
का पूर्व भाग क्यों नहीं है?
मुझे लगता है कि वाक्यांश "कमजोर युग्मित" है, "खराब एकीकृत" नकारात्मक अर्थ है। मुझे लगता है कि यह एक अच्छी बात है (टीएम) कि आप 'std :: istream' की आवश्यकता के बिना' std :: string' का उपयोग कर सकते हैं और 'std :: string' की आवश्यकता के बिना' std :: istream' का उपयोग कर सकते हैं। –
@ चार्ल्स: क्या आप मुझ पर विश्वास करेंगे अगर मैंने आपको बताया कि मैंने "सबमिट" मारने से पहले बिल्कुल विपरीत बदलाव किया है :)? मैं व्यक्तिगत रूप से एक और "वर्दी" मानक पुस्तकालय का पक्ष लेता हूं। सी ++ मानक पुस्तकालय "जैविक विकास" का प्रतीक है। –
@ चार्ल्स: मुझे निश्चित रूप से लगता है कि यह गलत है कि iostreams और स्ट्रिंग युग्मित नहीं हैं। मेरा मतलब है, iostream एक बुनियादी स्तर पर तारों में हेरफेर करने पर निर्भर करता है। निर्भरता को कम करना एक बात है, यदि आप स्ट्रिंग क्लास नहीं हैं तो सी-स्ट्रिंग के साथ काम करने वाले सदस्य फ़ंक्शन उपलब्ध नहीं हैं। – Puppy