Frage zu string::npos



  • Ne, Schreibarbeit sparen bestimmt nicht, da die Zeile ja eigentlich überflüssig ist. Optimierung kann es auch nicht sein, da

    if ( indexCh1a != -1 )
    

    das selbe bewirken würde.

    Mich als C++ Laie interessiert hauptsächlich ob string::npos einen anderen Wert als -1 annehmen kann. Das würde bedeuten, das obiges Beispiel fehlerhaft ist. Scheint aber eine Konstante zu sein, denn

    if ( indexCh1a != string::npos )
    

    nimmt der Compiler an. Diese Schreibweise bevorzuge ich jetzt. Falls ein C++ Experte das als Fehler erkennt, würde ich mich über ein Hinweis freuen.

    @David_pb: Ja der Meinung bin ich auch.



  • BerndD schrieb:

    Ne, Schreibarbeit sparen bestimmt nicht, da die Zeile ja eigentlich überflüssig ist. ..

    Das ändert sich aber schnell, wenn man 10mal npos verwendet. 😉

    BerndD schrieb:

    Mich als C++ Laie interessiert hauptsächlich ob string::npos einen anderen Wert als -1 annehmen kann. ...

    Ich wette drauf, dass der Standard nicht festlegt, wie npos implementiert wird.
    So gesehen ist der o.g. Code

    • "falsch" bzgl. der Allgemeingültigkeit, aber vermutlich
    • "richtig" bzgl. der konkreten StdLib.

    Gruß,

    Simon2.



  • Ergänzung: Und if(pos == string::npos)... ist der offizielle im Standard vorgesehene Weg, also auf jedem standardkonformen Compiler richtig.



  • CStoll schrieb:

    ... ist der offizielle im Standard vorgesehene Weg ...

    Das bringt mich auf die Frage nach Literaturquellen. Gibt es ein gute Literaturquelle für den "offizielle Standard", mit praxistauglicher Aufbereitung in Form einer Referenz? Die bei Amazon gelisteten Bücher haben alle Kritiken bekommen, die mich vom Kauf abschrecken. Eine Referenzwerk mit schlechten Index, Bindungen die nach wenigen Nutzungen brechen, Bücher die man noch nicht mal aufgeschlagen auf den Tisch legen kann oder die so beliebten "Anfänger tauglichen Bücher" (sprich: für Anfänger wird es schon reichen). Auf all diese Bücher habe ich echt kein Bock mehr. Ich habe in der Vergangenheit schon viel zu viele Autoren/Verlage "beschenkt". Über 80% der EDV Literatur ist das Papier nicht wert, auf dem es gedruckt wurde.

    Seit Ihn genauso frustriert wenn ihr an das Thema „Fachliteratur“ denkt?
    Hat jemand von Euch einen Geheimtipp welches Buch ein näheres hinsehen verdient?
    Welches Buch ist Euch ein treuer Begleiter?

    Ich bin ein erfahrener Programmierer der sich in C++ einarbeiten will. Ich lege gesteigerten Wert darauf die Informationen zu erhalten, die es mir ermöglichen von der C++ Abstraktion auf die vom Compiler generierten Programmcode schließen zu können. Des weiteren bräuchte ich eine Referenz zu allen Anwendungsbereichen (möglichst mit Bezug auf Windows, da ich ausschließlich für dieses BS programmiere)


  • Mod

    npos wird im template basic_string folgendermaßen deklariert und initialisiert:

    static const size_type npos = -1;
    

    basic_strings size_type ist das des allocators, welches ein hinreichend großer vorzeichenloser integraler Typ sein muss. npos ist also nie -1, andererseits wird ein Vergleich mit -1 immer erfolgreich sein (wenn wir mal davon ausgehen, dass size_type mindestens so groß wie unsigned ist). Der vorgestellte Code ist also so gesehen richtig aber sicherlich stilistisch nicht besonders gelungen.



  • BerndD schrieb:

    ...
    Seit Ihn genauso frustriert wenn ihr an das Thema „Fachliteratur“ denkt?...

    Ehrlich gesagt: Nein. 😃

    Ich habe hier
    - "Den Stroustrup" ("Die C++ Programmiersprache") als Quick-Reference für Techniken
    - "Den Standard" ("The C++ Standard")
    - "Die C++ Standardbibliothek" (Kuhlins/Schader) als Quickreference für die StdLib; ist allerdings auch nicht alleinseligmachend.
    Alles keine Geheimtipps.
    Dazu habe ich noch "was zum Schmökern":
    - Die "effectives" ("effectiv C++" und "more ..." von Scott Meyers),
    - die "exceptionals" von Herb Sutter ("more..." leider immer noch nicht 😡 )
    - "C++ gotchas" von Dewhurst (nette Sammlung)
    - "Imperfect C++" von Matthew Wilson und
    - "C++ Templates: The Complete Guide" von David Vandervoorde und Nicolai M. Josuttis

    Auch keine "Geheimtipps".
    Mit all denen bin ich gut zufrieden bis glücklich (der Kuhlins/Schader scheint mir der schwächste zu sein, aber er geht auch).
    Von Josuttis liegt hier noch "The C++ Standard Library" rum, aber in die finde ich nicht so recht rein (weiß nicht, ob's am Stil oder dem Inhalt liegt).

    Ach ja: Alle Bücher sind noch top in Ordnung ... nur der Dewhurst ist nach einem Freibadbesuch "zerwanst".

    Gruß,

    Simon2.



  • Simon2 schrieb:

    ... der Kuhlins/Schader scheint mir der schwächste zu sein, aber er geht auch...

    Witzig das dieses Buch bei Amazon durchweg gute Kritiken bekommen hat und deshalb bereits auf meiner Einkaufsliste stand.

    Danke für die Infos, werde mal schauen welches ich davon in einer Buchhandlung finde. Ich habe mir jedenfalls geschworen, nie wieder ein Buch zu kaufen, das ich nicht vorher ausgiebig begutachten konnte.



  • http://www.cppreference.com/ hat bis jetzt alle meine Fragen beantwortet.



  • 2ko-chan schrieb:

    http://www.cppreference.com/ hat bis jetzt alle meine Fragen beantwortet.

    Danke für den Link. Für eine kostenlose Quelle nicht schlecht, aber wir wissen doch, das die Antwort auf alle Fragen "42" lautet :D.

    Die Liste dort, unter "All C++ Functions" ist z.B. verdächtig kurz.



  • BerndD schrieb:

    Simon2 schrieb:

    ... der Kuhlins/Schader scheint mir der schwächste zu sein, aber er geht auch...

    Witzig das dieses Buch bei Amazon durchweg gute Kritiken bekommen hat und deshalb bereits auf meiner Einkaufsliste stand...

    Also, es ist nicht wirklich schwach/schlecht, hinterlässt bei mir aber bisweilen den Eindruck, nicht ganz vollständig zu sein - dann schaue ich im Standard nach und finde halt bisweilen den einen oder anderen overload mehr (oder z.B. std::string::push_back()). Aber für die Standardsachen zum Nachschlagen ("Wie war jetzt nochmal die Parameterreihenfolge genau ?") ist der schon ganz gut.

    Gruß,

    Simon2.



  • Simon2 schrieb:

    - die "exceptionals" von Herb Sutter ("more..." leider immer noch nicht 😡 )

    Ich leihe dir More Exceptional aus ( falls du es nicht schon bestellt hast ) und du mir Template Guide 🙂 falls du auf so eine Tauschaktion Lust hättest ...



  • KasF schrieb:

    Simon2 schrieb:

    - die "exceptionals" von Herb Sutter ("more..." leider immer noch nicht 😡 )

    Ich leihe dir More Exceptional aus ( falls du es nicht schon bestellt hast ) und du mir Template Guide 🙂 falls du auf so eine Tauschaktion Lust hättest ...

    Danke für das Angebot, aber meinen template guide hat mir meine Frau zu Weihnachten geschenkt - den geb' ich nicht aus der Hand. 😃

    Ist nicht bös' gemeint, aber da bin ich ein wenig eigen (nicht, weil meine Frau ihn mir geschenkt hat, sondern weil er mir viel wert ist und ich ihn gerne "zur Hand habe".

    Aber danke,

    Simon2.



  • Simon2 schrieb:

    KasF schrieb:

    Simon2 schrieb:

    - die "exceptionals" von Herb Sutter ("more..." leider immer noch nicht 😡 )

    Ich leihe dir More Exceptional aus ( falls du es nicht schon bestellt hast ) und du mir Template Guide 🙂 falls du auf so eine Tauschaktion Lust hättest ...

    Danke für das Angebot, aber meinen template guide hat mir meine Frau zu Weihnachten geschenkt - den geb' ich nicht aus der Hand. 😃

    Ist nicht bös' gemeint, aber da bin ich ein wenig eigen (nicht, weil meine Frau ihn mir geschenkt hat, sondern weil er mir viel wert ist und ich ihn gerne "zur Hand habe".

    Aber danke,

    Kein Problem, verstehe ich 😉 Dachte nur so ne kleine Leih-Geschichte mir Forensmitglieder wäre mal ganz witzig. Aber schon ok 🙂



  • Nachschlagewerke kann man nicht verleihen weil sie doch immer griffbereit stehen müssen. Ist doch doof wenn man beim nächsten mal ins Leere greifen würde 😮.

    Normalerweise habe ich Quellen, wo ich stark verbilligte Bücher kaufen kann. Leider sind die von Simon genannten Bücher dort nicht zu bekommen. Hat jemand eins der Bücher irgendwo stark verbilligt gesehen?


Anmelden zum Antworten