Char arrays



  • Servus,

    ich hab eine Frage, die sich mir immer mal wieder stellt:

    Wie oft benutzt Ihr eigentlich noch Char Arrays anstatt std::strings?

    Und warum? Aus performance-Gründen? Oder nur in Fällen, wo ihr zum Beispiel gezwungen seid mit C-APIs kommunizieren?

    Was sind ein paar gute Regeln, die man sich merken kann, was die Entscheidung c-string oder std::string angeht?

    Ich benutzte eigentlich immer std::string, aber das ist wahrscheinlich manchmal einfach nur overhead und unsinnig?



  • Ich nutze auch immer std::string. Man muss halt nicht jedes Mal bei ejder Operation die Größe anpassen und sowas. Die Schnittstelle zu C-APIs ist im prinzip mit std::string::c_str gut erreichbar, bzw im Schreibfall mit &str[0] und einer vorherigen resize Operation.



  • Eigentlich nur char-Arrays, wenn sie nur Stringliterale sind, die ich weiterreiche (also meistens 😋 ).



  • Interessant.

    Das mit den literalen macht natürlich Sinn. Warum genau das meistens so bei dir ist, weiß ich allerdings nicht 😃 Wird schon seine Gründe haben, nehm ich an 🙂

    Performance ist kein Argument, oder wie? Viel macht es wohl nicht aus, aber man könnte ja immer so argumentieren, dass man sagt : Ich brauche die ganzen Funktionen, die die string-klasse anbietet nicht, muss keine Teilstrings raussuchen, nix spliten etc. Dann kann ich doch gleich ein c-string benutzen!

    Ich fahr immer die Schiene, dass ich mir denke: Bevor ich jetzt im Voraus genau vorhersage, ob ich es mal brauche oder nicht und mir generell dazu Gedanken mache, nehm ich einfach lieber gleich den std::string.

    Aber ob Faulheit so ein gutes Argument ist 😛


  • Mod

    appropinquare schrieb:

    Performance ist kein Argument, oder wie? Viel macht es wohl nicht aus, aber man könnte ja immer so argumentieren, dass man sagt : Ich brauche die ganzen Funktionen, die die string-klasse anbietet nicht, muss keine Teilstrings raussuchen, nix spliten etc. Dann kann ich doch gleich ein c-string benutzen!

    Wann hat man diesen Fall denn schon? Spätestens die Größe ist doch fast immer dynamisch. Außer man hat eben den genannten Fall mit den Literalen (die sind übrigens auch bei mir die einzige Gelegenheit, wo ich regelmäßig C-Strings benutze).



  • SeppJ schrieb:

    Wann hat man diesen Fall denn schon? Spätestens die Größe ist doch fast immer dynamisch. Außer man hat eben den genannten Fall mit den Literalen (die sind übrigens auch bei mir die einzige Gelegenheit, wo ich regelmäßig C-Strings benutze).

    Hmmm, wohl wahr. Und in Fällen, in denen man das Maximum aber nicht das Minimum kennt, lohnt es sich wahrscheinlich schon wieder einfach per std::string Speicher zu sparen.

    Nun gut, dann verwende ich guten Gewissens weiter die string-Klasse.

    Danke an alle 🙂


Anmelden zum Antworten