PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : gutes C++ Tutorial ohne cout / cin?



RoCMe
14-09-2005, 16:55
Ich beschäftige mich seit einiger Zeit mit Linux. Zuvor habe ich unter Windows XP eine zeitlang mit Delphi OpenGL-Programme geschrieben (zu schreiben versucht ;) ). Jedenfalls will ich einen neuen Versuch starten, aber diesmal möglichst mit C++. aber dazu muss ich das erstmal beherschen...
ich hab also bei google gesucht und auch ein par schlne deutsche Tutorials zu C++ gefunden, aber sobald ich die ersten Beispiele mit g++ compilieren wollte fing der compiler an zu meckern ich würde veraltete bibliotheken nutzen...
Ich habe mich dann an eine C-einführung errinnert die ich mal mitgemacht hab und da wurde uns für die Ausgabe am Bildschirm empfohlen, nur noch printf aus der stio.h zu nutzen und nicht mehr die veraltete cout Funktion!
Gibt es denn schon Tuts die sich auf die neuen Bibliotheken beziehen?
Tipps und Links wären sehr nett :)
mfg
RoCMe

BeS
14-09-2005, 17:05
Ich habe mich dann an eine C-einführung errinnert die ich mal mitgemacht hab und da wurde uns für die Ausgabe am Bildschirm empfohlen, nur noch printf aus der stio.h zu nutzen und nicht mehr die veraltete cout Funktion!

Was war denn das für eine "C-einführung" ???
Ja, in C verwendet man printf(), aber in C gab es nie ein cout!
C++ ist etwas anderes, in C++ ist cout Standard, printf() ist C, man kann zwar theoretisch C code in C++ verwenden, dass ist aber in 99% aller Fälle alles andere als gut.
Was du wahrscheinlich falsch gemacht hast:
Du hast iostream.h eingebunden, richtig wäre iostream ohne .h.
Du hast einfach cin und cout geschrieben, richtig ist std::cout und std::cin, da cout und cin im std namespace sind.

anda_skoa
14-09-2005, 18:29
Mal ein einfaches Beispiel:



#include <iostream>

using std::cout;
using std::endl;

int main()
{
cout << "Boo" << endl;
return 0;
}


Ciao,
_

SeeksTheMoon
14-09-2005, 19:24
oder direkt "using namespace std;" eintragen.

bischi
14-09-2005, 20:22
oder direkt "using namespace std;" eintragen.

Nicht zu empfehlen, es sei denn, du weisst ganz genau, was du damit machst! (Kann zu komischen Fehlern kommen, wenn du dann eine Funktion überschreibst)

MfG Bischi

ZoRn
16-09-2005, 02:54
Nicht zu empfehlen, es sei denn, du weisst ganz genau, was du damit machst! (Kann zu komischen Fehlern kommen, wenn du dann eine Funktion überschreibst)

MfG Bischi
eben,
lass einfach das std:: vor cout/cin/ifstream/ofstream/etc...
Hat schon nen Grund, warum das im Standard so beschrieben ist.

gruss,
Malte

RHBaum
16-09-2005, 10:36
Der arme Neueinsteiger :D


aber diesmal möglichst mit C++
dann verwend auch c++ ....
nen teil vom standard ist die STL, und mit ihr auch die iostream lib
iss nen wesentliches konzept


aber sobald ich die ersten Beispiele mit g++ compilieren wollte fing der compiler an zu meckern ich würde veraltete bibliotheken nutzen...
Ja, das ist das eigentlich problem an c++, es gibt zwar nen standard, aber keiner haelt sich zu 100% dran ....

und es gibt zu viele schlechte buecher auf dem markt ... die entweder zu veraltet sind, oder kompilerspezifische abweichungen vom standard propagieren ....

wenn diese huerde umschifft hasst, bist schon nen ganzes stueck weiter ...

zum iostream thema :

cin, cout cerr sind nich veraltet, im gegenteil ... weiterhin fester bestandteil der STL.
nur nun im namespace std angesiedelt

namespaces sind ne total nuetzliche erweiterung, helfen dir namenskonflikte zu vermeiden, und objekte intuitiv benamen zu koennen.
sowas setzt man nich ausser kraft in dem man gleich mal mittels using die namespaces global macht ... schreib lieber std::cout
Alte und neue version der STL erkennt man an den headern ...
mem inlcude <iostream.h> zum beispiel iss die alte version, und cin cout sind im globalen namespace. Wird von einigen compilern nich mehr unterstuetzt, zumindest sollt es aber angemeckert (warning) werden
die neue version ist <iostream> (ohne das .h) und da sind cin cout correct im std namespace ....

mit dem wissen sollte man selbst den veralteten besipielcode zum laufen bringen , bzw auf korrekten neuen stand bringen ...

noch nen stolperstein ist die main funktion ...
die richtige signatur ist :
int main() , oder int main( int argc, char *argv[ ])
und nicht void main() !

Ciao ...

Joghurt
17-09-2005, 01:21
aber sobald ich die ersten Beispiele mit g++ compilieren wollte fing der compiler an zu meckern ich würde veraltete bibliotheken nutzen...
Alte Syntax
#include <iostream.h>
#include <irgendeinenanderenstandardheader.h>
...

cout << "Hallo" << endl;
Neue Syntax

#include <iostream>
#include <irgendeinenanderenstandardheader>
...

std::cout << "Hallo" << std::endl;