के बीच अंतर iostream
और iostream.h
के बीच क्या अंतर है?iostream और iostream.h
उत्तर
iostream.h
उन कंपाइलर्स द्वारा बहिष्कृत किया गया है जो इसे प्रदान करते हैं, iostream
सी ++ मानक का हिस्सा है।
स्पष्ट रूप से स्पष्ट करने के लिए वर्तमान सी ++ मानक (INCITS आईएसओ आईईसी 14882 2003) में iostream.h
का कोई उल्लेख नहीं है।
संपादित करें: जैसा कि @ जेरी ने उल्लेख किया है, न केवल मौजूदा मानक का उल्लेख नहीं है, लेकिन सी ++ के लिए कोई मानक इसका उल्लेख नहीं करता है।
iostream एक मानक शीर्षलेख है। iostream.h एक गैर-मानक शीर्षलेख है जो पूर्व-मानक C++ में बहुत आम था, और जो iostream विकसित हुआ था। पुराने कार्यक्रमों के साथ संभवतः उपयोग के लिए iostream.h होना अभी भी आम है।
यदि आपके कार्यान्वयन में iostream.h की एक कार्यशील प्रति है, तो यह शायद iostream जैसा ही है, सिवाय इसके कि iostream में सबकुछ std
नेमस्पेस में है, जबकि iostream.h आमतौर पर नामस्थान से पहले था, और उनका उपयोग नहीं किया था।
अपने कार्यान्वयन दोनों iostream और iostream.h है, तो iostream की तरह काम करने की संभावना है:
namespace std
{
#include <iostream.h>
}
हालांकि कि जरूरी नहीं कि यह कैसे लिखा है है।
असल में, अक्सर * बहुत * अधिक अंतर होता है - iostream.h में स्ट्रीम आमतौर पर टेम्पलेट नहीं थे जैसे वे iostream में हैं। यदि आप सरल पढ़ने और लिखने से परे बहुत कुछ करते हैं (उदाहरण के लिए, किसी भी मैनिपुलेटर्स को लिखें) अंतर अक्सर पर्याप्त होता है। –
@ जेरी: आप सही हैं, लेकिन दुर्भाग्यवश आप उस प्रणाली की यादें वापस ला रहे हैं जो मुझे परिवर्तित करना था जिसमें धाराओं पर कुछ बीमार दस्तावेज वाली जादूगर थी। हालांकि, इसका मतलब यह नहीं है कि आधुनिक कार्यान्वयन में iostream.h और iostream के बीच एक महत्वपूर्ण अंतर है। अगर मुझे याद है, तो मैं घर पहुंचने पर अपने जीसीसी कार्यान्वयन को देखूंगा। –
हां, मैंने अन्यत्र टिप्पणी क्यों की कि iostream और iostream.h के बीच अंतर व्यापक रूप से भिन्न होते हैं। कुछ में, iostream.h सभी सामग्रियों के लिए 'उपयोग' घोषणाओं के साथ एक वर्तमान कार्यान्वयन है। अन्य मामलों में, यह एक पुराना कार्यान्वयन है (और कुछ में, बीच में कुछ ...) –
जब सी ++ पहली बार बनाया गया था, तो मानक रनटाइम लाइब्रेरी में सभी फ़ाइलें समाप्त हो गईं। एच। जीवन सुसंगत था, और यह अच्छा था। Cout और cin का मूल संस्करण iostream.h में रहता था। जब भाषा एएनएसआई समिति द्वारा मानकीकृत की गई थी, तो उन्होंने रनटाइम लाइब्रेरी में सभी कार्यों को std नेमस्पेस (जो आम तौर पर एक अच्छा विचार है) में स्थानांतरित करने का निर्णय लिया। हालांकि, इसने एक समस्या प्रस्तुत की: यदि वे सभी कार्यों को std नेमस्पेस में ले जाते हैं, तो पुराने कार्यक्रमों में से कोई भी काम नहीं करेगा!
पुराने मुद्दों के लिए पिछड़े संगतता को बनाए रखते हुए, इस समस्या को हल करने का प्रयास करने के लिए, हेडर फ़ाइलों का एक नया सेट पेश किया गया था जो समान नामों का उपयोग करते हैं लेकिन .h एक्सटेंशन की कमी है। इन नई शीर्षलेख फ़ाइलों में उनकी सभी कार्यक्षमता std namespace के अंदर है। इस तरह, पुराने प्रोग्राम जिनमें #include <iostream.h>
शामिल हैं, को फिर से लिखने की आवश्यकता नहीं है, और नए प्रोग्राम #include <iostream>
कर सकते हैं।
जब आप मानक लाइब्रेरी से हेडर फ़ाइल शामिल करते हैं, तो सुनिश्चित करें कि यदि आप मौजूद हैं तो गैर .h संस्करण का उपयोग करें। अन्यथा आप हेडर के बहिष्कृत संस्करण का उपयोग करेंगे जो अब समर्थित नहीं है।
इसके अतिरिक्त, सी ++ में अभी भी उपयोगी सी पुस्तकालयों में से कई पुस्तकालयों को सी उपसर्ग दिया गया था (उदा। Stdlib.h cstdlib बन गया)। टकराव नामकरण से बचने में मदद के लिए इन पुस्तकालयों की कार्यक्षमता को स्टडी नेमस्पेस में भी स्थानांतरित कर दिया गया था।
हालांकि, जब आप अपनी खुद की हेडर फाइलें लिखते हैं, तो आपको उन्हें एक .h एक्सटेंशन देना चाहिए, क्योंकि आप अपना कोड std नेमस्पेस में नहीं डाल पाएंगे।
नियम: पुस्तकालय के गैर .h संस्करण का उपयोग करें यदि यह मौजूद है, और std namespace के माध्यम से कार्यक्षमता तक पहुंचें। यदि गैर .h संस्करण मौजूद नहीं है, या आप अपने स्वयं के शीर्षलेख बना रहे हैं, तो .h संस्करण
- 1. <iostream> बनाम <iostream.h> बनाम "iostream.h"
- 2. iostream
- 3. iostream.h, fstream.h नहीं मिला
- 4. iostream Xcode
- 5. "iostream" फ़ाइल एक्सकोड 4.2
- 6. विजुअल स्टूडियो 2010 iostream
- 7. # सी में iostream शामिल?
- 8. cstdio स्ट्रीम बनाम iostream धाराओं?
- 9. बजना iostream - प्रतीक नहीं मिला
- 10. गंभीर त्रुटि: ऐसी कोई फ़ाइल या निर्देशिका iostream.h
- 11. सी ++ iostream endl fiasco क्या है?
- 12. iostream बनाम ostream क्या अलग है?
- 13. सी ++ - अनसुलझा समावेश: <iostream>
- 14. एंड्रॉइड में iostream शामिल करने में असमर्थ क्यों?
- 15. एंड्रॉयड NDK-निर्माण iostream: ऐसी कोई फ़ाइल या निर्देशिका
- 16. iostream एक abs फ़ंक्शन को परिभाषित क्यों करता है, और मैं इसे कैसे रोक सकता हूं?
- 17. सी ++ - सेमीथ बनाम math.h (और इसी तरह के सी-प्रीफिक्स्ड बनाम एचएच एक्सटेंशन हेडर)
- 18. क्या सी प्रारूपित I/O फ़ंक्शंस (printf, sprintf, आदि) IOStream से अधिक लोकप्रिय हैं, और यदि ऐसा है, तो क्यों?
- 19. 'iostream' फ़ाइल नहीं मिला xcode 4.5 में त्रुटि उत्पन्न होती है?
- 20. क्या यह फोर्क() को बढ़ावा देने के लिए सुरक्षित है :: asio :: ip :: tcp :: iostream?
- 21. मुझे std :: iostream :: sentry के साथ खुद को कब चिंता करनी चाहिए?
- 22. क्लैंग 3.1 ubuntu 12.04 पर libC++ के साथ, iostream नहीं मिला
- 23. बूस्ट :: iostream zlib एकाधिक फ़ाइलों को एक संग्रह में संपीड़ित करना
- 24. सी ++ iostream के लिए आवरण वर्ग, एसटीडी की तरह उपयोग धारा संशोधक :: ऑपरेटर <<
- 25. C++ में iostream लाइब्रेरी में अपना स्वयं का फ़ंक्शन घोषणा कैसे करें?
- 26. सी ++ हेडर फ़ाइल समावेशन पर मूल प्रश्न?
- 27. #include <iostream> मौजूद है, लेकिन मुझे एक त्रुटि मिलती है: पहचानकर्ता "कोउट" अपरिभाषित है। क्यूं कर?
- 28. क्या बूस्ट iostream मैप की गई फ़ाइल के बीच कोई अंतर है और इंटरप्रोसेस मैप की गई फ़ाइल को बढ़ावा देता है?
- 29. सी ++: मैक ओएसएक्स
- 30. सी ++ iostreams और पायथन
का उपयोग करें, आपको शायद std नेमस्पेस का उल्लेख करना चाहिए। – zdan
@ जेरी: शब्द को पकड़ लिया लेकिन अर्थ –
@ जेरी: स्पष्ट, जोड़ा गया। –