Frage zu C++ Reference und anderen Quellen
-
Wenn ich eines gelernt habe, dann das, dass C und C++ doch zwei unterschiedliche Programmiersprachen sind.
Das ist vollkommen richtig.

Jedoch besteht die C++-Standardbibliothek teilweise noch aus der alten, fast komplett makellos übernommenen C-Standardbibliothek.Deswegen schlagen vielleicht auch mal C-Programmierer dort nach.
Edit: Eigentlich hast du schon Recht.
-
Wo werden da Beispiele in C geschrieben?
-
manni66 schrieb:
Wo werden da Beispiele in C geschrieben?
Du brauchst dir nur die nächstbeste Funktion aus der C-Standardbibliothek anzusehen.
-
manni66 schrieb:
Wo werden da Beispiele in C geschrieben?
Die Beispiele zu den Funktionen der C-Standardbibliothek lassen sich auch mit einem C-Compiler übersetzen. Jedoch sind sie so gestellt, dass man auch einen C++-Compiler nutzen kann, an den Stellen, an denen es sonst eigentlich einen Unterschied machen würde.
-
Warum sollte in der C Standardbibliothek kein C Code auftauchen?
Das C++ Beispiel für isdigit ist auch in C++
http://www.cplusplus.com/reference/locale/isdigit/
-
manni66 schrieb:
Wo werden da Beispiele in C geschrieben?
Ich habe z. B. die Funktion strncpy angeschaut.
Folgender Code ist per copy und paste von dieser Seite hier: http://www.cplusplus.com/reference/cstring/strncpy/
/* strncpy example */ #include <stdio.h> #include <string.h> int main () { char str1[]= "To be or not to be"; char str2[40]; char str3[40]; /* copy to sized buffer (overflow safe): */ strncpy ( str2, str1, sizeof(str2) ); /* partial copy (only 5 chars): */ strncpy ( str3, str2, 5 ); str3[5] = '\0'; /* null character manually added */ puts (str1); puts (str2); puts (str3); return 0; }Sone schrieb:
Jedoch besteht die C++-Standardbibliothek teilweise noch aus der alten, fast komplett makellos übernommenen C-Standardbibliothek.
Also sprich, ich könnte alles, was in C möglich ist, auch in C++ machen?? Ich muss es nur schaffen, die Beispiele auf http://en.cppreference.com/w/ und http://www.cplusplus.com/reference/ auf C++ zu transfermieren?
-
Warum sollte man strcpy in C++ benutzen?
-
silent_max schrieb:
manni66 schrieb:
Wo werden da Beispiele in C geschrieben?
Ich habe z. B. die Funktion strncpy angeschaut.
Das ist ja auch eine C-Funktion! In C++ würde man doch von vornherein
char str1[]= "To be or not to be"; char str2[40]; char str3[40];vermeiden und stattdessen
std::string str1 = "To be or not to be"; std::string str2; std::string str3;nehmen, wo immer es möglich ist!
-
manni66 schrieb:
Warum sollte man strcpy in C++ benutzen?
Manni, es war nur ein Beispiel von vielen...
-
Dass zur Erläuterung der C-Funktionen Beispiele in C geschrieben sind, finde ich nun aber nicht sonderlich überraschend!
-
Das hier z. Bsp. habe ich gesucht:
http://en.cppreference.com/w/cpp/utility/functional
Eine Erläuterung von C++ Funktionen
-
silent_max schrieb:
manni66 schrieb:
Warum sollte man strcpy in C++ benutzen?
Manni, es war nur ein Beispiel von vielen...
Ja. Wenn du ein C Beispiel in der Referenz siehst, bist du vermutlich an der falschen Stelle, und solltest nach C++ suchen!
-
silent_max schrieb:
Das hier z. Bsp. habe ich gesucht:
http://en.cppreference.com/w/cpp/utility/functional
Eine Erläuterung von C++ Funktionen
Das erläutert kein Funktionen. Wenn du eine Erläuterung zu Funktionen brauchst, musst du ein C++ Lehrbuch verwenden aber sicher keine Referenz!
-
manni66 schrieb:
Das erläutert kein Funktionen. Wenn du eine Erläuterung zu Funktionen brauchst, musst du ein C++ Lehrbuch verwenden aber sicher keine Referenz!
Glaubst Du, dass ein C++ Lehrbuch auslangt?
-
silent_max schrieb:
manni66 schrieb:
Das erläutert kein Funktionen. Wenn du eine Erläuterung zu Funktionen brauchst, musst du ein C++ Lehrbuch verwenden aber sicher keine Referenz!
Glaubst Du, dass ein C++ Lehrbuch auslangt?
Wenn es gut ist und man es liest.

-
Sone schrieb:
Wenn es gut ist und man es liest.

Wenn man es durcharbeitet.
Das ist ein Lehrbuch. Zum lernen, nicht nur für schöne Gedanken.
-
DirkB schrieb:
Sone schrieb:
Wenn es gut ist und man es liest.

Wenn man es durcharbeitet.

-
silent_max schrieb:
Also sprich, ich könnte alles, was in C möglich ist, auch in C++ machen?? Ich muss es nur schaffen, die Beispiele auf http://en.cppreference.com/w/ und http://www.cplusplus.com/reference/ auf C++ zu transfermieren?
Korrekt, du brauchst nichtmal was transferieren. C++ ist eine Erweiterung von C, hieß auch mal C mit Klassen. Es gibt die Ausnahme mit dem impliziten Cast von void * auf einen beliebigen Pointer was in C geht und in C++ nicht, aber ansonsten geht alles in C++ genauso wie in C.
Allerdings hat C++ versucht bessere oder zumindest andere Möglichkeiten bereit zu stellen, sodass es häufig zwei Möglichkeiten gibt. char * vs std::string, x[] vs std::vector<x>, printf vs std::cout, malloc/free vs new/delete ....
Nicht immer sind die C++-Varianten besser. Häufig wird es aber als schlechten Stil angesehen wenn man die Varianten mischt und Leute wie Sone regt es maßlos auf wenn man im C++-Forum was mit printf schreibt, obwohl es korrektes C++ ist.
Du solltest für dich entscheiden, ob du strikt C++ machen willst, alla "C ist Teufelszeug" oder auch die C-Funktionen nutzen willst. Wenn du reines C++ willst, was keine schlechte Idee ist, dann solltest du #includes, die mit .h enden oder mit c anfangen eher meiden (gibt sicher Ausnahmen).*wartet auf Sones gepolter* :trollface:
-
geht alles in C++ genauso wie in C.
Nein. Es gibt viele Kleinigkeiten, wie der Scope einer im for-init-statement deklarierten Variable.
char * vs std::string
Das ist kein Kampf.
std::stringhat so gut wie überall gewonnen. Ausnahme: absolute Performance.malloc/free vs new/delete
mallocundfreesind in C++ absolut Tabu.Leute wie Sone regt es maßlos auf wenn man im C++-Forum was mit printf schreibt, obwohl es korrektes C++ ist.
printf hat deutliche Nachteile gegenüber den C++-Streams, und kooperiert auch einfach nicht mit
cout(bspw. Failbits). Daher sollte es einfach nicht verwendet werden.Wenn du reines C++ willst, was keine schlechte Idee ist, dann solltest du #includes, die mit .h enden oder mit c anfangen eher meiden (gibt sicher Ausnahmen).
Nein, der ganze Tipp ist Blödsinn.
*wartet auf Sones gepolter* :trollface:
Nach so eine Post ist das ja auch kein Wunder.
-
std::string verwendet Heap-Allocation (ausser bei extrem kurzen Strings) und ist somit gar nicht so toll wie hier immer angepriesen wird. Jede Heap-Allocation ist sau teuer.