Frage zu C++ Reference und anderen Quellen



  • Sone schrieb:

    Eine teilweise bessere Referenz ist cppreference.com.

    Die ist auch aktueller beim Standard.

    Edit: Was ist eigentlich das Problem bei den C-Beispielen? Stört es dich so sehr? Es ist halt auch für C-Programmierer.

    Wenn ich eines gelernt habe, dann das, dass C und C++ doch zwei unterschiedliche Programmiersprachen sind.

    Oder soll ich von dem Gedanken wieder weg kommen?



  • 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.

    Bspw. http://www.cplusplus.com/reference/cctype/isdigit/


  • Mod

    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::string hat so gut wie überall gewonnen. Ausnahme: absolute Performance.

    malloc/free vs new/delete

    malloc und free sind 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.


Anmelden zum Antworten