सी इनपुट स्ट्रीम व्यवहार "सिन" के साथ
सी में "सिन" स्ट्रीम का उपयोग करके इनपुट पढ़ते समय, यह समझना महत्वपूर्ण है कि यह कैसे होता है विभिन्न डेटा प्रकारों के साथ इंटरैक्ट करता है। डिफ़ॉल्ट रूप से, "सिन" एक समय में एक शब्द पढ़ता है, जो वर्ण सरणी या स्ट्रिंग से निपटने पर अप्रत्याशित व्यवहार का कारण बन सकता है।
प्रदान किए गए कोड उदाहरण में, "स्ट्रिंग" में "इनपुट ()" विधि " वर्ग "cin >> str;" का उपयोग करता है इनपुट स्ट्रिंग को पढ़ने के लिए. हालाँकि, यह कथन केवल एक शब्द को कैप्चर करता है, इनपुट में किसी भी बाद के शब्द को अनदेखा करता है। परिणामस्वरूप, जब इनपुट में कई शब्द होते हैं, जैसे "स्टीव हॉकिंग", तो केवल पहला शब्द, "स्टीव", "str" सरणी में संग्रहीत होता है।
समाधान: getline का उपयोग करना( ) पूर्ण पंक्तियों को पढ़ने के लिए
एक वर्ण सरणी में इनपुट की एक पूरी पंक्ति को पढ़ने के लिए, "cin >>" के बजाय "getline()" फ़ंक्शन का उपयोग किया जा सकता है। यहां "getline()" का उपयोग करके अद्यतन इनपुट विधि दी गई है:
void input()
{
cout "getline()" दो तर्क लेता है: गंतव्य सरणी के लिए एक सूचक और सरणी का आकार। यह इनपुट को तब तक पढ़ता है जब तक कि एक न्यूलाइन कैरेक्टर सामने न आ जाए, प्रभावी रूप से इनपुट की पूरी लाइन को कैप्चर कर लेता है। बोझिल और त्रुटि-प्रवण। सी स्टैंडर्ड लाइब्रेरी "std::string" क्लास प्रदान करती है, जो स्ट्रिंग हैंडलिंग के लिए अधिक मजबूत और टाइप-सुरक्षित दृष्टिकोण प्रदान करती है। वर्ण सरणियों का उपयोग करने के बजाय, कोड को इस प्रकार फिर से लिखा जा सकता है:
#include
#शामिल
क्लास स्ट्रिंग
{
जनता:
std::string str;
शून्य इनपुट()
{
cout
आखिरकार, "iostream.h" और "conio.h" जैसी हेडर फ़ाइलों का उपयोग पुराना हो गया है। आधुनिक सी विकास में क्रमशः "iostream" और "conio" जैसी हेडर फ़ाइलों का उपयोग करना चाहिए।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3