const char* - Definition und Einsatz



  • Hallo, Ich habe mir vor kurzem das Buch C++ - Das umfassende Handbuch - Aktuell zu C++ 20 gekauft und relativ zu Beginn wird

    const char*
    

    vorgestellt. Ich stelle mir nun die Frage, was das eigentlich bringt bzw. warum oder wo es eingesetzt wird, anscheinend ist ja auch

    std::string 
    

    nur ein const char* Array...
    Ich freue mich über Rückmeldungen, vielen Dank schon Mal!



  • std::string ist kein Alias zum const char* sondern eine ganze Klasse die eine Zeichenkette implementiert und auch dafür nötige Funktionen dazu bereitstellt, wie z.B. find(), append(), etc.



  • @TheFirstStep sagte in const char* - Definition und Einsatz:

    Das umfassende Handbuch

    lol. Wegwerfen. (Türstopper oder einer gehassten Person schenken geht natürlich auch.)



  • @TheFirstStep sagte in const char* - Definition und Einsatz:

    anscheinend ist ja auch std::string nur ein const char* Array...

    std::string ist eine Klasse. Weder ein Pointer noch ein Array.

    ein const char* Array

    Keine Ahnung was Du damit sagen willst?
    Ein Pointer auf char const?
    Ein Array aus Pointern auf char const?
    Ein Pointer auf ein Array aus char const?
    Eigentlich egal. Es gibt bei jeder Auslegungsweise X Argumente warum std::string das eben nicht ist.

    Ach ja: Wirf das Buch weg. Gaaaanz weit.



  • @Swordfish sagte in const char* - Definition und Einsatz:

    lol. Wegwerfen. (Türstopper oder einer gehassten Person schenken geht natürlich auch.)

    Hast du jetzt die Buchkritik verfasst, weil du drei Wörter "Das umfassende Handbuch" des Buches gelesen hast.
    Oder -was ich ehrlich gesagt nicht glaube- hast du das Buch gelesen und ist es wirklich schlecht?


  • Mod

    @Jockelx sagte in const char* - Definition und Einsatz:

    Hast du jetzt die Buchkritik verfasst, weil du drei Wörter "Das umfassende Handbuch" des Buches gelesen hast.
    Oder -was ich ehrlich gesagt nicht glaube- hast du das Buch gelesen und ist es wirklich schlecht?

    Es ist von Jürgen Wolf, und im Galileo Verlag. Das ist wie ein wissenschaftlicher Kommentar von Erik von Däniken in der Bildzeitung: Das braucht man nicht unbedingt gelesen zu haben, um zu wissen, welche Qualität das hat.

    PS: Oder ist das Buch von Torsten Will gemeint und wie kann es eigentlich sein, dass es zwei Bücher mit dem gleichen Titel auf dem Markt gibt?



  • @SeppJ sagte in const char* - Definition und Einsatz:

    Torsten Will

    Die Google-Infobox sagt mir:

    Bücher: Freude trainieren: lustvoll leben, gesund erfolgreich sein ; [das 91-Tage-Experiment]

    Und der schreibt auch noch bessere C++ Bücher, als Jürgen Wolf?



  • Ich weiss nicht wovon ihr redet...ich habe wohl eine andere Suchmaschine.
    Das Buch mit dem Titel liefert mir als Autor nur Torsten T. Will und dieser hat weder was mit Jürgen Wolf, noch was mit "Freude trainieren: lustvoll leben, gesund erfolgreich sein " zu tun. Nur irgendwas mit "schreibt hin und wieder für die c't".

    Aber hauptsache man kann schonmal sagen, dass man das Buch einer gehassten Person schenken soll....
    Sind die Literaturkritiken hier eigentlich alle so fundiert recherchiert?



  • @Jockelx Oh, ja es könnte auch das von Till sein. Aber auch da bin ich skeptisch:

    • Sprachgrundlagen
    • Fehlerbehandlung
    • Objektorientierte Programmierung
    • Zeiger
    • Schnittstelle zu C
    • Templates
    • Container
    • Standardbibliothek
    • C++ Core Guidelines
    • GUI-Programmierung mit Qt
    • Extra: Tutorials zum Thema "guter Code"

    Auf 1k Seiten. Ambitioniert.

    @TheFirstStep Von wem ist das Buch?



  • @Jockelx sagte in const char* - Definition und Einsatz:

    Sind die Literaturkritiken hier eigentlich alle so fundiert recherchiert?

    Nein!



  • @Swordfish sagte in const char* - Definition und Einsatz:

    @Jockelx Oh, ja es könnte auch das von Till sein.

    Ich habs nur kurz gegoogelt und mir wurde nur das von Till angezeigt. Wenn es von Wolf ist, dann verstehe ich die Kritik natürlich!

    @Swordfish sagte in const char* - Definition und Einsatz:

    Aber auch da bin ich skeptisch

    Ja, sicher, skeptisch bin ich da auch erstmal.Aber ich kenne es halt nicht und auch wenn es mir unwahrscheinlich erschien, wollte ich wissen, ob du es kennst und es wirklich so schlecht ist.
    Gut, aber anscheinend war das eh alles ein Missverständnis, da nicht klar ist, um welches Buch es sich überhaupt handelt.



  • Von dem Buch von Till gibt es online eine Leseprobe (https://s3-eu-west-1.amazonaws.com/gxmedia.galileo-press.de/leseproben/5093/leseprobe_rheinwerk_cplusplus_handbuch.pdf). Das sieht nicht so sagenhaft schlecht aus... es werden strings behandelt, string_views, vectoren, und so weiter. Und es gibt bei Code Samples häufig godbold.org links mit der Implementation. Da habe ich schon deutlich schlechteres gelesen.


  • Mod

    Man erkennt von der Leseprobe, dass es darauf abzielt, moderne Paradigmen als die Basis fuer den Umgang mit der Sprache zu vermitteln. Bspw. rule of zero und andere. Aber wie schlimm oder gut der Brocken wirklich ist, erkennt man erst am letztendlichen didaktischen Produkt, also der Faehigkeit der Leser, zu schreiben, was sie schreiben muessen.
    C++ von A bis Z ist auch nicht in allen Passagen augenscheinlich desastroes, und hatte die fuer seine Zeit jeweils als modern geltenden Paradigmen sicherlich auch z.T. integriert, aber die Programmierer die der Wolf 'gerissen' hat, klatschen im Nachhinein new und rohe Zeiger herum bis ihnen alles um die Ohren fliegt, und sie sich hierher wenden.
    @Swordfish's Schubladendenken ist nicht zufaellig entstanden. Buecher von diesen sog. renommierten Verlaegen, die schick und herausgeputzt wirken und sich als Gesamthandbuch anbieten, stellen sich oft als rein routiniertes 'muss herausgebracht werden' Zeug heraus.



  • @Jockelx sagte in const char* - Definition und Einsatz:

    Gut, aber anscheinend war das eh alles ein Missverständnis

    Mea culpa, ich hätte gründlicher nachsehen sollen.

    @Columbo sagte in const char* - Definition und Einsatz:

    @Swordfish's Schubladendenken

    Ja ne, das war schon bewusstes Schubladisieren. Unglücklich daß es zwei Bücher mit fast dem selben Titel gibt von denen eins mit hoher Wahrscheinlichkeit in die Tonne gehört.



  • @Jockelx sagte in const char* - Definition und Einsatz:

    Sind die Literaturkritiken hier eigentlich alle so fundiert recherchiert?

    Sagen wir mal so: die meisten haben hier gewisse Erfahrungswerte aus denen heraus bestimmte Bücher eben nicht empfohlen werden.

    Aus dem gleichen Grund geht man grundsätzlich davon aus, dass der Stoff der in Sachen C oder C++ an der Uni gelehrt wird in aller Regel outdated ist: Erfahrungen.



  • @It0101 sagte in const char* - Definition und Einsatz:

    Aus dem gleichen Grund geht man grundsätzlich davon aus, dass der Stoff der in Sachen C oder C++ an der Uni gelehrt wird in aller Regel outdated ist: Erfahrungen.

    Ja die wollen leider gleich Zeiger, verkettete Listen etc lehren und dann kommen sie gar nicht bei mehr als C mit Klassen an.
    Letztens jemand gehabt dem ich half und die Vorlesung war schon ein riesen Brecher, aber der erste Teil war alles der C Teil von C++ und am Ende war da noch etwas Objektorientiertes C++. Vorbereitet auf C++ Entwicklung war er dadurch 0.



  • @It0101 sagte in const char* - Definition und Einsatz:

    @Jockelx sagte in const char* - Definition und Einsatz:

    Sind die Literaturkritiken hier eigentlich alle so fundiert recherchiert?

    Sagen wir mal so: die meisten haben hier gewisse Erfahrungswerte aus denen heraus bestimmte Bücher eben nicht empfohlen werden.

    Das hat sich doch längst alles geklärt. Ist das Buch von Jürgen Wolf gemeint, dann gibt es diese Erfahrungswerte und man kann ohne es zu lesen davon ausgehen, dass es nicht gut ist. Ich bin von dem anderen Buch ausgegangen und da gibt es nunmal kaum Erfahrungswerte, weil der halt nicht viel geschrieben hat.



  • @5cript sagte in const char* - Definition und Einsatz:

    @It0101 sagte in const char* - Definition und Einsatz:

    Aus dem gleichen Grund geht man grundsätzlich davon aus, dass der Stoff der in Sachen C oder C++ an der Uni gelehrt wird in aller Regel outdated ist: Erfahrungen.

    Ja die wollen leider gleich Zeiger, verkettete Listen etc lehren und dann kommen sie gar nicht bei mehr als C mit Klassen an.

    In einem gewissen Maß verständlich, da man gerade an der Uni lernen sollte, wie Verkettete Listen, Balancierte Binärbäume, Tries, etc. funktionieren und sie bevorzugt auch in Übungsaufgaben selbst implementieren können sollte.

    Das darf natürlich keine Ausrede dafür sein, dass man Strings in char* hält oder andere C-Fummeleien lehrt. Sowas geht auch in modernem C++-Stil.

    Ich verstehe auch nicht, weshalb anscheinend so viele Professoren und/oder Tutoren sich da nicht selbst weiterbilden und stattdessen seit 30 Jahren den selben Kram lehren.



  • Dieser Beitrag wurde gelöscht!


  • @Finnegan sagte in const char* - Definition und Einsatz:

    In einem gewissen Maß verständlich

    Ich hatte erst C, dann Java in meinem Studium.
    Ich hielt das für sinnvoller insgesamt. Weil dann lernt man beide Welten kennen.
    Und wenn man sich von sich aus für C++ interessiert, hat man dann auch die perfekte Grundlage.

    C++ gabs bei uns als extra freiwilliges Modul dass man belegen konnte.
    Und das war modern C++14. 1A Vorlesung



  • @5cript sagte in const char* - Definition und Einsatz:

    Und das war modern C++14. 1A Vorlesung

    Programmieren lernt man nicht beim Professor.
    Programmieren lernt man ausschließlich in der Praxis (gilt ausnahmsweise mal für C und C++).
    char* ist C
    std:string ist C++

    Durch das verkorkste Sprachdesign von C++ (auch C supporten zu wollen) hat sich leider - insbesondere bei Lehrern,Buchautoren,Tutorialschreiberlingen... - ein Wirrwarr der beiden Sprachkonzepte verbreitet, zeigt sich u.a. an der Vokabel C/C++.
    Die Faulheit von Lehrern zeigt sich dann häufig in Aufgabenstellungen wie - programmieren sie irgendwas mit char* ohne die Standardbibliothek zu benutzen, und das wird dann auch noch als C++ (statt korrekt C) tituliert.
    std:string (und Gesamt-C++) wurde geschaffen, um Programmierlaien den Einstieg in die Programmierung zu erleichtern und Fehlerquellen (Zeiger) zu vermeiden; das hindert diese C++ Laien aber nicht daran, sich als professionelle Programmierer zu bezeichnen und in kritischen Situationen dann doch wieder C einzusetzen, wobei es sich dann natürlich rächt, das Zeigerkonzept von C nicht verstanden zu haben.
    bspw. wirst du im gesamten Linux-Kernel kein std:string vorfinden, sondern ausschließlich char*, was beweist, dass selbst für gigantische praxisrelevante Projekte C - in den richtigen Händen - vollkommen ausreicht.


Anmelden zum Antworten