String Headerdatei, fehler
-
HI!
Ich heiße Christoph, bin 19 jahre alt, und hab jetzt mal just4fun mit c++ angefangen. Habe schon einige erfahrung mit dem programmieren.
Habe mir letztens son Heft für den einstieg in c++ gekauft, doch bei dem einen thema komme ich nicht weiter. Ich benutze den compiler von visual c++ 6.0 autoren version.
Irgend was haut bei mir nicht hin hier der code#include <string>
#include <iostream.h>int main()
{
string satz = "Hallo C++!";cout << satz;
return 0;
}hoffe es kann mir jemand helfen.
-
Finde den Unterschied!
#include <string>
#include <string.h>
-
#include <string> #include <iostream> int main() { std::string satz = "Hallo C++!"; std::cout << satz; return 0; }
oder
#include <string> #include <iostream> using namespace std; int main() { string satz = "Hallo C++!"; cout << satz; return 0; }
Hat nichts mit VC++ zu tun.
Wenn du den Code aus einem Buch hast dann wirf es weg.@bsash: include in c++ ohne ".h"
-
mal eine off-topic frage:
soll man für seine eigenen Headerdateien die Endung .h benutzen oder .hpp?
Oder soll man sie ohne Endung nennen, wie in der Standardbibliothek?
-
Den Dingern gar keine Endung zu geben ist auf keinen Fall eine gute Idee und ob .h oder .hpp ist Geschmackssache; ich für meinen Teil verwende gerne .cpp+.hpp und .c+.h.
-
Ich benutze zurzeit .cpp und .h.
In den meisten Bücher wird man auch diese Kombination finden.
Naja, hast Recht. Das ist Geschmackssache.
-
Ich hab ne andere Lösung gefunden
#include <iostream>
#include <string>
usign namespace std;
void main()
{
und dann er RestWas macht eigentlich usign namespace std; ?
-
using namespace x; macht all Functionen, Klassen un Variablen in dem Namesraum (namespace) x in dem Scope zugänglich indem es sich befindet. Hier ist es der globale Namesraum, das heist überall zugänglich.
Namesräume sind eigentlich nur Prefixe die man gelegendlich mit einer using Instruktion beiseite lassen kann. Also:
namespace x{ int a;//der eigentliche Namen ist nicht a sondern x::a }; int main(){ //a=7; Error "a" ist unbekannt x::a=20;//Kein Error da x::a der komplete Namen ist using namespace x; a=5;//Durch die unsing Instruktion sucht der Kompiler nach a und //x::a und findet x::a. Fals er beide findet Error return 0; } void foo() { //a=235; Error da der scope indem die using Instruktion ist //wieder geschlossen ist using x::a;//Man muss nicht immer alles in einem Namesraum //zugänglich machen, einzelne Elemente gehen auch a=999; }
-
Christop aka Optimusrau schrieb:
Ich hab ne andere Lösung gefunden
Im Wesentlichen ist das Unix Toms Lösung mit Syntaxfehlern. (usign + void main, obwohl es int main heißt)
Lies mal die FAQ, da ist das using namespace std; erklärt.
-
Damit sagst du, dass der Compiler die Funktionen etc. in dem Namensraum std suchen soll.
Somit kannst du alle Klassen und Funktionen, die in dem Namensraum definiert sind, benutzen. D.h. hier alle Standardklassen und Funktionen
Stattusing namespace std;
kann man auch
std::cin
schreiben
Benutze bei deiner Lösung aber bitte
int main() { // ... return 0; }
, da
void main() { // ... }
nicht erlaubt ist. // EDIT
-
void main () war noch nie erlaubt, ist daher nicht veraltet.
-
upps. ich hab den Beitrag editiert.