[C++] (include) kann nicht eingebunden werden

H

Hoot

Gast
Hi all,
habe mir vor einigen tagen die "MS Visual C++ 2005 Express Edition" heruntergeladen und habe nun angefangen diese auch zu nutzen, nachdem die Regestrierung ewig dauerte.
aber gibt es ein problem (ich probiere immer zuerst die "hello world" applikation aus um mich mit den grundfunktionen und nutzungsweisen des compilers vertraut zu machen).

und die sieht ja so aus:
#include <iostream.h>

int main()
{
cout << "Hello World!\n";
return 0;
}


nun sagt mir der compiler aber nach dem kompilieren:
1>.\Hello.cpp(1) : fatal error C1083: Datei (Include) kann nicht geöffnet werden: "iostream.h": No such file or directory

was mach ich da falsch??? oder was ist falsch eingestellt?
bin noch nicht der checker in sachen c++, da ich gerade erst bei der hälfte des buches bin^^ und das den alten ms compiler benutzt.

hoffe ihr könnt mir helfen.

mfg Hoot
 
Ich kenn zwar diese IDE nicht, aber probier es mal mit #include <iostream> (also ohne .h). Und wenn es dann immernoch nicht geht, dann schreib eine Zeile darunter using namespace std;. So mache ich das immer bei meiner IDE (Dev-Cpp).
 
Zuletzt bearbeitet:
also ich war jetzt in meinem verzeichnis und da sollte sich doch die iostream datei dort finden lassen:
Ordner "VC" und dann "Include" in diesem Ordner befindet sich eine ~ 2KB große Datei names iostream. ist das die richtige??
 
@Quidoff:
wenn ich es probiere wie´s du mir gesagt hast kommt:
1>.\Hello.cpp(5) : error C2065: 'cout': nichtdeklarierter Bezeichner
hmm.. so ein schrott^^
 
Bei cpp darf das .h nicht beim Include rein:
#include <iostream>

Vielleicht gehts dann.
 
Also versteh ich das jetzt richtig, dass er die Datei zwar einbindet, aber dann cout nicht kennt?
Hast du auch using namespace std; darunter geschrieben?

Wenn das nichts bringt, dann versuchs doch so mal:
Code:
#include <iostream>


int main() {
    
    std::cout << "Hello World";
    
    return 0;
}
 
@Quidoff:
also so funzt des.
aber was genau bedeutet des std:?? muss ich das bei den neuen c++ versionen immer vor cout hinschreiben??
muss das dann auch noch vor andere befehle oder kommen da wieder andere "zusatzbefehle" hin??
(mein "lehrbuch" ist vom jahr 2001 also vllt nicht mehr ganz auf dem neuesten stand)
gibt es da ne liste was sich geändert hat??
mfg Hoot

und nochmal thx
 
Also wenn du using namespace std; unter die include Anweisung schreibst, dann müsstest du auf das std:: eigentlich verzichten können.
 
@Hoot Die in C++ vordefinierten Namen befinden sich im Namensbereich std Die using-Direktive erlaubt, die Namen aus dem Namensbereich std direkt zu verwenden.
 
Hallo,
jeh nach IDE brauchst du das using namespace std

Beim Visual C++ 2005 gehts so:

#inlude <iostream>

using namespace std;

void main(void)
{
cout<<"Funktioniert";
}

Beim Borland C++ Builder musst du #include <iostream.h> benutzen(bin net ganz sicher)

Gruß Andy
 
also wenn ich dann "using namespace std;" schreib kann ich das ganze prog hindurch auf das std::... zeugs verzichten oder??
hab nochmal nachgeschaut das eine buch (jetzt lerne ich c++ ist von 2001 und das andere:
3D spiele programmierung ist von 2004) hat sich in dem bereich sonst noch viel getan??
wenn ja kann mir einer nen link von ner bibliothek schicken (für visual c++) da ich keine finden konnten, nur solche für andere compiler.
mfg Hoot
PS:
thx @ all
 
Eine gängige Bibliothek ist boost. Aber ob die für Spielentwicklung interessant ist, weis ich leider nicht.
Aber gerade gundlegende Sachen wie regex kann die Lib.
 
Wenn du aus einem Buch von 2001 lernst, würde ich das Visual Studio 6 benutzen. In C++ hat sich ja seitdem nichts geändert. Ich benutze auch noch Visual Studio 6 und arbeite gerade mit einem Buch über DirectX 9. Am besten du benutzt den Compiler, der auch im Buch verwendet wird.
 
welche programmier sprache ist eigentlich die am meist verbreiteste und für welche bereiche werden die einzelnen genutzt??
 
hi habe gerade eben noch mal n "für meine verhältnisse kompliziertes programm" geschriebn:

#include <iostream.h>
using namespace std;

class addition
{
public:
addition();
~addition();
void set1number(number1) { firstnumber = number1;};
void set2number(number2) { secondnumber = number2;};
int valve () { return (firstnumber + secondnumber);};
private:
float firstnumber;
float secondnumber;
};

int main()
{
addition numbertocalculate;
float number1;
float number2;
cout << "Hallo bitte geben Sie zwei Zahlen ein, die Sie addieren möchten.\n";
cin >> number1;
cin >> number2;
numbertocalculate.set1number(number1);
numbertocalculate.set2number(number2);
cout << number1 << "+" << number2 << "=";
numbertocalculate.valve;
return 0;
}


aber jetzt sagt er mir wieder das gleiche wie vorher also:
1>.\calculator.cpp(2) : fatal error C1083: Datei (Include) kann nicht geöffnet werden: "iostream.h": No such file or directory
 
Hoot schrieb:
aber was genau bedeutet des std:?? muss ich das bei den neuen c++ versionen immer vor cout hinschreiben??
Es gibt keine "c++ versionen". Es gibt nur _eine_ Sprache C++. Diese wurde 1998 erstmals von ISO standardisiert und was davor war interessiert heute nicht mehr. 2003 gab's übrigens eine Revision, und das ist bis C++0x auch der aktuelle Stand.
Standard Headerdateien kommen ohne .h daher, d.h. es gibt kein <iostream.h>, sondern nur <iostream>. Die Header für C Kompatibilität werden übrigens nach dem gleichen Schema benannt, lediglich mit einem c am Anfang. Z.B. heisst die C Headerdatei stdio.h in C++ cstdio.

Hoot schrieb:
muss das dann auch noch vor andere befehle oder kommen da wieder andere "zusatzbefehle" hin??
Naja, Befehle gibts in C++ ja nicht. Beschäftige dich am besten mal mit dem Konzept der Namensräume. std ist nämlich so einer. Bezeichner der C++ Standard Bibliothek (STL), wie zB cout, sind im Namensraum std zu finden. Um auf diese zuzugreifen, muss man das dem Compiler natürlich mitteilen. Dazu hast du verschiedene Möglichkeiten.

Entweder du machst das über eine explizite Qualifizierung
Code:
std::cout

Über eine using Direktive
Code:
using namespace std;
Damit wird der komplette Namensraum std in den aktuellen Namensraum "eingeblendet", so dass du auf alle Bezeichner aus std ohne explizite Qualifizierung zugreifen kannst.

Oder über eine using Deklaration
Code:
using std::cout;
Damit wird nur cout in den aktuellen Namensraum "eingeblendet", so dass du auch nur auf cout ohne explizite Qualifizierung zugreifen kannst.

Hoot schrieb:
mein "lehrbuch" ist vom jahr 2001 also vllt nicht mehr ganz auf dem neuesten stand
Ist eigentlich kein Grund, da wie gesagt der Standard 1998 verabschiedet wurde. Leider findet man immer wieder Lektüre, die nicht mehr aktuell ist.

Hoot schrieb:
gibt es da ne liste was sich geändert hat??
Liste ist gut. Den Standard gibt's natürlich als Dokument, ISO/IEC 14882:2003(E). Da steht alles zur Sprache drin. Allerdings ist das kostenpflichtig. Wer aber suchet, der findet. Was jedoch nicht heissen soll, dass ich hier jemand zu illegalen Sachen anstiften will. :D Eine gute Übersicht, was es in C++ so gibt (natürlich nicht alles), findest du hier.

Andy123 schrieb:
jeh nach IDE brauchst du das using namespace std
Nope. Das hat mit der IDE nichts zu tun. Das betrifft die Sprache selbst. Sollte eine IDE ohne aktuelle Standard Bibliothek daherkommen, sollte man sich so eine besorgen, zB sltport. Alles andere macht wenig Sinn.
 
#inlude <iostream>
using namespace std;

Das .h weglassen. Wurde doch oft genug gesagt.
 

Ähnliche Themen

Antworten
5
Aufrufe
1.058
VikingGe
V
Antworten
25
Aufrufe
2.345
Zurück
Oben