Funktion mit Parameter (char* S) mit std::string aufrufen



  • Oder ist das eines der edits gewesen und es war vorher anders?

    Nö, ich habe nichts am Quellcode geändert.

    ------

    Ich denke ich werde es auf die altbekannte Art und Weise umschreiben, da ich jetzt nicht sicher bin ob man es machen kann oder nicht.

    Ganz streng genommen (C++11): Ja, das ist in Ordnung.

    Der Teufel steckt auch hier im Detail, da ja unterschiedliche Compiler C++11 unterschiedlich implementiert haben.


  • Mod

    Bitte ein Bit schrieb:

    Ganz streng genommen (C++11): Ja, das ist in Ordnung.

    Der Teufel steckt auch hier im Detail, da ja unterschiedliche Compiler C++11 unterschiedlich implementiert haben.

    Nein, das war auch in C++98 praktisch schon so, mit C++11 ist es nur offiziell geworden, weil man gemerkt hat, dass man den Standard auch so interpretieren könnte, dass es nicht gilt. Jede vernünftige Implementierung macht das so.

    Das ist so wie die Klugscheißer, die festgestellt haben, dass ein vector laut altem Standard auch rückwärts im Speicher stehen könnte. Das hat zwar keine Implementierung gemacht, aber in C++11 hat man es trotzdem nochmal klargestellt.



  • Das ist so wie die Klugscheißer, die festgestellt haben, dass ein vector laut altem Standard auch rückwärts im Speicher stehen könnte. Das hat zwar keine Implementierung gemacht, aber in C++11 hat man es trotzdem nochmal klargestellt.

    Eine etwas harte Ausdrucksweise.

    Für Leute wie mich, die relativ nach an der Grenze zur Verifikation entwickeln, sind solche Ungereimtheiten nicht anwendbar.


  • Mod

    Bitte ein Bit schrieb:

    Das ist so wie die Klugscheißer, die festgestellt haben, dass ein vector laut altem Standard auch rückwärts im Speicher stehen könnte. Das hat zwar keine Implementierung gemacht, aber in C++11 hat man es trotzdem nochmal klargestellt.

    Eine etwas harte Ausdrucksweise.

    Für Leute wie mich, die relativ nach an der Grenze zur Verifikation entwickeln, sind solche Ungereimtheiten nicht anwendbar.

    Du benutzt wirklich nie, dass Vectorspeicher vorwärts angeordnet ist? 😮 Mein Respekt vor so viel Disziplin.



  • Du benutzt wirklich nie, dass Vectorspeicher vorwärts angeordnet ist? 😮 Mein Respekt vor so viel Disziplin.

    😕

    Wo steht das, das ein std::string ein Vectorspeicher ist ???



  • 😕

    Wo steht das, das ein std::string linear angeordnet ?

    Das ist doch mein Problem, das ich in der Doku nicht gefunden habe das std::string linear angeordnet sind.



  • SeppJ schrieb:

    Das ist so wie die Klugscheißer, die festgestellt haben, dass ein vector laut altem Standard auch rückwärts im Speicher stehen könnte.

    Bitte was? Das würde sich aber mit 23.4.2 "Class template vector" Paragraph 1 beißen:

    [...] The elements of a vector are stored contiguously, meaning that if v is a vector<T, Allocator> where T is some type other than bool, then it obeys the identity &v[n] == &v[0] + n for all 0 <= n < v.size()

    (C++03)



  • krümelkacker schrieb:

    (C++03)

    Sag bloß, du wusstest nicht, dass es diesen Satz in C++98 noch nicht gab?



  • Bitte ein Bit schrieb:

    Wo steht das, das ein std::string linear angeordnet?

    Im C++11 Standard steht das (21.4.1/5) hier:

    The char-like objects in a basic_string object shall be stored contiguously. That is, for any basic_string object s, the identity &*(s.begin() + n) == &*s.begin() + n shall hold for all values of n such that 0 <= n < s.size().



  • Bashar schrieb:

    krümelkacker schrieb:

    (C++03)

    Sag bloß, du wusstest nicht, dass es diesen Satz in C++98 noch nicht gab?

    Ist mir tatsächlich neu, dass das, was ich aus C++03 zitierte, nicht in C++98 stehen soll.


Anmelden zum Antworten