String - Ausgabe funktioniert nicht bzw. verschiedene Kapazität und Länge eines Strings



  • TyRoXx schrieb:

    Sone schrieb:

    Ich dachte, dass capacity wegen der '\0 den Wert 12 hat?? Wo liegt mein Denkfeher?

    capacity() liefert die maximale Länge, die der String annehmen kann ohne neuen Speicher allokieren zu müssen.
    Wie groß das Verhältnis capacity() / length() ist, hängt von der Implementierung ab.
    Bei dir scheint es wohl 5/4 zu sein.

    Strings bis Länge 15 werden bei Visual C++ ohne dynamische Speicheranforderung im Objekt selbst abgelegt.

    Gut, das ist alles implementationsabhängig. Stimmt, die meisten Compiler allokieren sehr kleine Strings vom Stack... :xmas2:



  • Ich dachte, dass capacity wegen der '\0 den Wert 12 hat?? Wo liegt mein Denkfeher?

    @silent_max: Was hat des den mit der '\0 zu tun? Glaubst du, dass das im string steht?



  • Sone schrieb:

    [...] die meisten Compiler allokieren sehr kleine Strings vom Stack...

    Das klingt so, als würden die statt new oder malloc dann alloca verwenden. Ich bin dafür, dass man nicht immer "Stack" sagt, wenn man nur meint, dass man Daten direkt im Objekt statt sonstwo ablegt. Es heißt übrigengs auch "allozieren" und nicht "allokieren".



  • krümelkacker schrieb:

    Sone schrieb:

    [...] die meisten Compiler allokieren sehr kleine Strings vom Stack...

    Das klingt so, als würden die statt new oder malloc dann alloca verwenden.

    Für mich klingt das so als würde das ganze implementationsspezifisch ablaufen.
    Ob dann alloca verwendet wird oder nicht ist doch völlig irrelevant.

    Ich bin dafür, dass man nicht immer "Stack" sagt, wenn man nur meint, dass man Daten direkt im Objekt statt sonstwo ablegt.

    Du hast vollkommmen Recht, sry.
    Ein basic_string<> kann schließlich auch Feldelement eines Containers o. ä. sein, dann liegt gar nichts mehr von dem String noch im Stack 😃

    Übrigens, was das "sprachliche" angeht:

    <a href= schrieb:

    Wikipedia">Das zugehörige Verb lautet allozieren. In der Informatik wird zunehmend häufiger auch das Verb allokieren verwendet, das direkt vom englischen „allocate“ abgeleitet wurde. Der Rechtschreibduden enthält diese letztere Schreibweise nicht.

    Ich bin ein deutlicher Befürworter des Anglizismus. 😉



  • ...



  • Swordfish schrieb:

    Sone schrieb:

    Übrigens, was das "sprachliche" angeht:

    <a href= schrieb:

    Wikipedia">[...] allokieren [...] das direkt vom englischen „allocate“ abgeleitet wurde. [...]

    Ich bin ein deutlicher Befürworter des Anglizismus. 😉

    Zweifelhaft. allocare.

    Daran ist nichts zweifelhaft. Hättest du mal die Seite besucht, die du verlinkst, hättest du herausgefunden dass die sprachliche Bedeutung von allocate in der Informatik mit der von allocare nichts zu tun hat.



  • Das beantwortet nur eine meiner beiden Fragen.

    Ich bin immer noch nicht auf eine Lösung gestoßen, warum bei mir in der Ausgabe die Meldung D:\...\Eigene Übung 107 - String vergleichen, Länge, usw.ext ist entweder falsch geschrieben oder konnte nicht gefunden werden . Oder habt ihr wegen der Meldung den Einwurf mit der Glaskugel gemacht??

    Gruß



  • Woran liegt das, dass size und length andere Werte haben als capacity und max_size?

    Weil es unterschiedliche Dinge sind!

    warum bei mir in der Ausgabe die Meldung ...

    Wie ware es, wenn du keine Leerzeichen oder sonstige Sonderzeichen verwendest?



  • ...



  • Swordfish schrieb:

    Sone schrieb:

    Hättest du mal die Seite besucht, die du verlinkst, hättest du herausgefunden dass die sprachliche Bedeutung von allocate in der Informatik mit der von allocare nichts zu tun hat.

    Wiktionary schrieb:

    allocare [...] mittellateinisch: mieten

    Ja ne, is klar. 🙄

    Es tut mir Leid.
    Wieso stellt Wikimedia (bzw. die Nutzer) widersprüchliche Informationen ins Netz? Sry, mein fehler:

    <a href= schrieb:

    Das Wiktionary">Herkunft:
    zu mittellateinisch allocare

    😕

    Ich bin immer noch fest überzeugt, dass allokieren aus dem Englischen abgeleitet ist, schließlich ist die Sprache der Informatik Englisch und die informationstechnische Begrifflichkeit hat mit Latein nichts am Hut.



  • ...



  • Swordfish schrieb:

    Sone schrieb:

    Ich bin immer noch fest überzeugt, dass allokieren aus dem Englischen abgeleitet ist, schließlich ist die Sprache der Informatik Englisch und die informationstechnische Begrifflichkeit hat mit Latein nichts am Hut.

    Und wo meinst hat die englische Sprache das Wort her? allocate 🙄

    Dein 🙄 kannst du dir sparen, denn es ist völlig egal wovon die Englische Sprache allocate abgeleitet hat. Es geht nur darum, wovon allokieren direkt abgeleitet ist.
    (Das allocate von allocare abgeleitet ist hatte ich btw. schon vor dir gefunden. lol)



  • ...



  • Swordfish schrieb:

    <a href= schrieb:

    allokieren">Herkunft: mittellateinisch allocare

    Hältst jetzt endlich die Klappe!?

    Das habe ich bereits gequotet (s. o.).
    Außerdem ist das keine hundertprozentig unfehlbare Quelle, ganz im Gegenteil. 😉



  • Wovon allokieren abgeleitet ist, ist doch irrelevant. Array zum Beispiel ist auf Englisch ein genau definierter Fachbegriff und hat nichts mit der ursprünglichen Bedeutung mehr zu tun. Genauso hat "to allocate" nichts mehr mit der Bedeutung zu tun, mit der sie vom Lateinischen übernommen wurde.

    Im Standard wird "allocate" hauptsächlich mit dynamischem Speicher verwendet, die Verwendung von Sone war deshalb unpassend. Allokieren ist eine falsche Ableitung von Allokation und hat deshalb nichts mit dem lateinischen Homophon zu tun.

    BTW:

    Sone schrieb:

    Es tut mir Leid.

    http://www.belleslettres.eu/artikel/tut-mir-leid-rechtschreibung.php



  • flammenkrieg schrieb:

    BTW:

    Sone schrieb:

    Es tut mir Leid.

    http://www.belleslettres.eu/artikel/tut-mir-leid-rechtschreibung.php

    Hmm. Habe es immer bewusst groß geschrieben. :xmas1:


Anmelden zum Antworten