C ++ स्रोत कोड ("iostream.h नहीं मिला" त्रुटि) को कैसे संकलित करें?


20

मैं C ++ या किसी प्रोग्रामिंग लैंग्वेज के बारे में चर्चा नहीं करना चाहता! मैं बस जानना चाहता हूं कि मैं linow ubuntu के साथ helloworld.cpp को संकलित करने के बारे में क्या गलत कर रहा हूं!

मैं C ++ सीख रहा हूं इसलिए मेरे कदम हैं:

vim में hello.cpp खोलें और इसे लिखें

#include <iostream.h>
int main()
{
    cout << "Hello World!\n";`
    return 0;
}

इसलिए, उसके बाद मैंने इस टर्मिनल में प्रयास किया

g++ hello.cpp

और आउटपुट है

hello.cpp:1:22: fatal error: iostream.h: No such file or directory
compilation terminated.

आपकी क्या सलाह है? मेरे लिए कदम गाइड द्वारा कोई उपयोगी कदम! धन्यवाद!


2
यदि कोई इस प्रश्न को ऑफ़-टॉपिक के रूप में बंद करने के लिए मतदान करने पर विचार कर रहा है: यह वास्तव में एक प्लेटफ़ॉर्म-विशिष्ट मुद्दा है, क्योंकि विंडोज के लिए सबसे लोकप्रिय C ++ कंपाइलर (Microsoft Visual C ++) इस सिंटैक्स को स्वीकार करता है, लेकिन अधिकांश अन्य कंपाइलर ( g++उबंटू में) इसे स्वीकार मत करो।
एलियाह कगन

#include <iostream> नेमस्पेस std का उपयोग करके; int main () {cout << "हैलो वर्ल्ड"; वापसी 0; } यह काम कर सकता है ...

जवाबों:


43

आपको उपयोग करना चाहिए #include <iostream>, नहीं iostream.h; रूप बहुत पुरानी है और वर्षों के बाद से बहिष्कृत कर दिया गया है।

आप एक से अधिक आप शायद पर जानना चाहता हूँ पढ़ सकते हैं बनाम गैर यहाँ रूपों: http://members.gamedev.net/sicrane/articles/iostream.html

(प्लस, आपको लिखना चाहिए std::coutया एक पंक्ति होनी चाहिए using namespace std;अन्यथा आपकी अगली त्रुटि कंपाइलर के बारे में होगी जो परिभाषा नहीं खोज रहा है cout।)


4
@gabriel C ++ का एक लंबा इतिहास है, जो 1980 के मध्य में वापस आया था। अब कई प्रकाशित मानक हैं, जिनमें से नवीनतम (C ++ 11) इस वर्ष के शुरू में जारी किए गए हैं, और पिछले एक (जो सभी संकलक आज का अनुसरण करते हैं) 2003 (C ++ 03) के हैं। आपके द्वारा जोड़ा गया मार्गदर्शिका उस से बहुत अधिक पुराना प्रतीत होता है, हालांकि कंपाइलर सॉफ़्टवेयर से इसका उल्लेख करते हुए (विकिपीडिया के अनुसार, बोरलैंड टर्बो सी ++ को 1994 में बंद कर दिया गया था)। यदि आप C ++ 03 मानक का अनुसरण करते हुए एक ट्यूटोरियल चुनते हैं, तो आपका कोड आज उपलब्ध किसी भी लिनक्स वितरण पर काम करेगा।
रिकार्डो मुर्री

1
@gabriel लगता है कि आपके प्रश्न का उत्तर पहले ही StackOverflow पर दिया जा चुका है: stackoverflow.com/questions/909323/…
Riccardo Murri

1
आपको इसकी आवश्यकता भी हो सकती है: sudo apt-get install install-
Essential

2
@ david6: मेरे पास बिल्ड- एसेंशियल इंस्‍टॉल है, लेकिन iostream.hमेरे सिस्टम में कोई नहीं है। वास्तव में, C ++ हैडर फाइलें libstdc ++ - dev द्वारा स्थापित की जाती हैं , जो कि C ++ कंपाइलर पैकेज g ++ द्वारा आवश्यक है, जो कि बिल्ड- आवश्यक द्वारा आवश्यक है । तो, नहीं, आपको सरल C ++ प्रोग्राम को संकलित करने के लिए बिल्ड-आवश्यक की आवश्यकता नहीं है ; g++पैकेज स्थापित करना पर्याप्त है।
रिकार्डो मुरी

1
केवल उपसर्ग के coutबिना काम करने के लिए std::, using std::cout;बेहतर है using namespace std;। यहां तक ​​कि कई usingकथन (बिना namespace) आम तौर पर बेहतर होते हैं, क्योंकि आप stdअपने नाम कार्यक्रम में पहचानकर्ताओं से नहीं लाते हैं जो आप नहीं चाहते हैं और नामों के साथ संघर्ष कर सकते हैं।
एलियाह कगन

15

आप बदलना चाहिए iostream.hकरने के लिए iostream। मुझे भी वैसी ही त्रुटि मिल रही थी जैसी आपको मिल रही है, लेकिन जब मैं iostream.hसिर्फ बदल गया iostream, तो ठीक से काम किया। शायद यह आपके लिए भी काम करे।

दूसरे शब्दों में, उस पंक्ति को बदलें जो कहती है:

#include <iostream.h>

इसके बजाय यह कहें:

#include <iostream>

C ++ मानक लाइब्रेरी हेडर फाइलें, जैसा कि मानक में परिभाषित किया गया है, में .hएक्सटेंशन नहीं हैं ।

जैसा कि रिकार्डो मुरारी के जवाब में कहा गया है , आपको coutइसके पूर्ण रूप से योग्य नाम से भी कॉल करने की आवश्यकता होगी std::cout, या इनमें से कोई दो लाइनें (अधिमानतः आपके #includeनिर्देशों के नीचे लेकिन आपके अन्य कोड के ऊपर):

using namespace std;
using std::cout;

दूसरा तरीका बेहतर माना जाता है, विशेष रूप से गंभीर प्रोग्रामिंग परियोजनाओं के लिए, क्योंकि यह केवल std::coutनाम stdस्थान में सभी नामों को लाने के बजाय प्रभावित करता है (जिनमें से कुछ संभावित रूप से आपके कार्यक्रम में उपयोग किए गए नामों के साथ हस्तक्षेप कर सकते हैं)।


बहुत बढ़िया जवाब। @ गैब्रिएल के प्रश्न का उत्तर देने में, आपने कुछ वर्षों के लिए किए गए भ्रम को दूर किया है।
isomorphismes
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.