Dipl. User mit summa cum laude
Das Problem ist, C bzw C++ kommt nur mit einer minimalistischen Grundlagenbibliothek an. Selbst solche sachen, wie printf oder cout sind nur mehr oder weniger ein innerer Pseudostandard. Original C hatte nicht mal Ein- und Ausgabefunktionen, das waren alles mal urspruenglich Fremdbibliotheken. Daher ist es heute nicht ganz einfach einzugrenzen, was zum Standard C/C++ dazugehoehrt, und es gibt darueber sicherlich genau so viele Meinungen, wie es C-Compiler gibt. Eine gute Richtlinie ist die gcc mit dem g++ und die ANSI-C Norm. Ansonsten wird mit C++ ueberall auch die STL, die Standard Template Library, zum Standard berechnet.
Alles andere, ob es nun Bibliotheken wie connio.h (enthaellt einen Befehl zum Bildschirmloeschen) unter Borland C-Compilern, (n/PD)curses zum Arbeiten auf der Console, GUI Toolkits wie GTK oder 3D Engines wie Irrlicht sind, sind nicht Teil des C/C++ Standards, und damit ist deren Dokumentation nirgendwo zentral zusammengefasst. Wie sollte das auch gehen, da es mehere hunderttausend verschiedener Bibliotheken gibt, wovon die meisten sich sogar in ihren Aufgaben ueberschneiden nur dabei ganz verschiedene Konzepte verfolgen.
Selbst solche auf den meisten Systemen vorhandenen Bibliotheken wie time.h, unistd.h, math.h sind eigentlich kein wirklicher allgemeiner C/C++ Standard, sondern ein Standard fuer GNU C/C++, der auf allen POSIX kompatiblen Betriebssystemen eingehalten wird. Hier fangen auch schon die Probleme an, da Windows, egal in welcher Version, nicht wirklich POSIX konform ist, und versucht wird, dieses Manko durch die mingw (minimalistic GNU for Windows) Emulation zu beseitigen, indem den C/C++ Programmen vorgegaukelt wird, es wuerde sich um ein POSIX System handeln. Aber selbst damit kann man schnell auf die Nase fallen, da nicht alle Implementationen der "Standardbibliotheken" (und davon gibt es auch einige, fuer jeden Compiler mindestens eine) den GNU-Standard vollstaendig erfuellen. Und da der Standard selber noch nicht fertig ist und weiter entwickelt wird, kann es dir passieren, dass du schon in grauenhafte Probleme kommst, wenn du nur von einer Version des gcc auf eine andere (aeltere) Version des gcc wechselst. Kurzum, es ist ein totales Chaos ...
Doch genug des Schwafelns ...
Alle Dinge, an die du dich beim CBuilder gewoehnt hast, wie GUI Elemente (Dialogfenster, Listboxen) oder auch nicht sichtbare Objekte, wie Stringlisten etc, sind idR NICHT STANDARDKONFORM. Der CBuilder hat fuer sowas in der Regel die selben Klassen und Hierarchien wie Delphi. Der CBuilder ist mehr oder weniger ein Delphi mit C/C++ Syntax. Das Wissen, was du mit dem CBuilder gesammelt hast, kannst du mehr oder weniger komplett mit ALLEN ANDEREN Compilern vergessen, da es ueberall sonst komplett anders gemacht wird. Daher sind die Programme des CBuilders auch untrennbar mit Windows verbunden. Der CBuilder forciert standardmaessig naemlich die Benutzung der borlandeigenen Bibliotheken, die du nirgendwo sonst finden wirst. Dadurch kann man es schon fast als einen eigenen C++ Dialekt bezeichnen.
In allen anderen Compilern wirst du dir das meiste erst selber zusammenzimmern muessen oder dich an die Verwendung von Fremdbibliotheken gewoehnen muessen, die dir diese Aufgabe bereits abgenommen haben. Ein guter Anfang stellt hier die STL dar, die quasi zum C++ Standard dazugehoehrt. Sie beinhaltet Strukturen zur Speicherung und Ein- und Ausgabe von Daten. Hierzu zaehlen solche elementaren Dinge, wie Strings, Streams, ein und mehrfach verkettete Listen, Hashtabellen, dynamische Arrays (Vektor genannt), Queues, Stacks und Bitmaps, sowie diese bearbeitende effiziente Algorithmen, wie z.B. fuer Sortieren, Suchen, usw. Das besondere an der STL ist, dass sie vollstaendig auf Templates aufbaut und streng zwischen Daten und Algorithmen trennt. Templates sind Datenstrukturen, die vom Compiler automatisch an den verwendeten Datentyp der zu speichernden Daten angepasst werden. Um z.B. ein dynamisches Array ueber int Werte zu machen wuerde man eine Variable vom Typ vector<int> erzeugen. Fuer ein dynamisches Array ueber TSomething Objecte waere es eine Variable vom Typ vector<TSomething>. In dem einen werden Ints gespeichert und in dem anderen TSomething Objekte. Die Algorithmen sind von den Datenstrukturen strickt getrennt. Um dies zu gewaehrleisten wurde mit der STL das sehr leistungsfaenige Konzept der Iteratoren eingefuehrt, die eine Art Zaehlindex innerhalb einer Datenstruktur darstellen und als eine Art Pointerersatz dienen koennen. Die Algorithmen bedienen sich ausschliesslich der Iteratoren innerhalb einer Datenstruktur, und das einzige, was sie fordern, ist die Definition einer kleiner-Vergleichs-Operation, dem < Operator. (ja, um sinnvoll mit der STL arbeiten zu koennen muss man sich mit Operatorenueberladung beschaeftigen). Sind diese zwei Komponenten erfuellt, kann man die Algorithmen auf die Datenstrukturen loslassen, und braucht sich nicht mehr um die eigentliche Struktur zu kuemmern. Das klingt jetzt alles sehr umstaendlich und abstrakt, aber das ist es auch. Das Problem ist, dass man um mit der STL zu arbeiten sehr viele neue und abstrakte Konzepte wirklich verstanden haben muss. Objektorientierte Programmierung (inklusive Vererbung, dem ueberladen von Methoden und objektbeschraenkter Typdeklarationen), Templates, Operatorenueberladung und Iteratoren sind dabei das mindeste, denn man braucht dies alles gleichzeitig und durcheinander, um wirklich zu verstehen, was man da schreibt. Andererseits tuts vielleicht ein wenig Copy'n'Paste fuer den Anfang auch, wenn man damit einfach nur arbeiten will ...
Mit Teilen der STL wirst du schon gearbeitet haben. Hierzu zaehlen naemlich auch die Ein- und Ausgabestreams cout, cin und die Dateistroeme ifstream und ofstream, welche die Operatoren << und >> ueberladen.
Eine gute kurze Referenz (!) fuer die STL ist unter http://www.cppreference.com/index.html zu finden. Eine umfassendere und wissenschaftlichere Referenz ist unter http://www.sgi.com/tech/stl/stl_index.html zu finden. Hierbei handelt es sich um (Nachschlage-) Referenzen, und es wird einem NICHTS erklaehrt, wie man mit dem Zeug arbeiten kann.
Fuer den allgemeinen Umgang mit der STL gibt es allerdings vielfaeltige Tutorials im Netz.
Zum einen waere da die wissenschaftliche und pseudooffizielle Referenz von SGI : http://www.sgi.com/tech/stl/
Eine andere brauchbare Einfuehrung (mit vielen Bildern und Beispielen) scheint http://www.cs.brown.edu/people/jak/p...tltut/tut.html zu sein.
Eine brauchbar aussehende Beschreibung von (einstmals ?) gebraeuchlichen zusaetzlichen Bibliotheken fuer C++ jenseits der STL findet man unter http://www.trumphurst.com/cpplibs1.html
Ein recht umfassend erscheinener Ueberblick ueber verschiedene GUI Toolkits inclusive Wertung findet man unter http://www.free-soft.org/guitool/
Und hier noch eine Seite, die ich schnell mit Google gefunden habe, die viele weitere nuetzliche Links zu interessanten Themen rund um C/C++ bietet: http://www.ba-stuttgart.de/~boehm/NoBugs/
So .. ich hoffe, diese Links helfen die ein klein wenig weiter, dich durch den undurchdringbaren Dschungel der C/C++ Programmierung zu kaempfen.