[gelöst] std::string über Referenz befüllen



  • Hallo,
    ich habe eine Funktion, welche als Argumente Referenzen auf std::strings erhält und diese mit Ergebnissen ihrer Arbeit füllen soll. Allerdings funktioniert das nicht so ganz. Hier ein kleines Beispiel der beiden auftretenden Fehler:

    void func(std::string& Text)
    {
        Text = "Langer Text";
    }
    
    main()
    {
        std::streng KurzerText = "Kurz";
        func(KurzerText);
        std::string SehrlangerText = "Das Haus steht um die Ecke.";
        func(SehrlangerText);
    
        //Irgendeine Art von Ausgabefunktion für KurzerText und SehrlangerText
    
        return 0;
    }
    

    Die Ausgabe wäre dann:

    KurzerText: Lang
    SehrlangerText: Langer Texteht um die Ecke.
    

    Der Fehler ist schnell erklärt. Die Funktion mit der Referenz auf den std::string ersetzt in diesem nur die Zeichen auf Länge des bereits enthaltenen Textes bzw. des neuen, falls der enthaltene Text länger war.
    Meine Frage ist nun, wie schaffe ich es die std::strings in der Funktion neu zu befüllen, so, dass deren Länge, wie normalerweise auch, dem neuen Inhalt angepasst wird?

    Ich hoffe jemand kennt das Problem oder weiß auch so Abhilfe. 🙂



  • Little Programmer schrieb:

    KurzerText: Lang
    SehrlangerText: Langer Texteht um die Ecke.
    

    Normalerweise sollte da

    Langer Text
    Langer Text
    

    als Ausgabe für beide Stringobjekte erscheinen, so wie Du das machst. Wie gibst Du das Zeugs denn aus?



  • Kannst du bitte mal vollständigen Code posten? Wenn das stimmen würde, was du sagst, hätte deine Standardlibraryimplementierung einen ziemlich bösen Bug an einer zentralen Stelle. Da sind erstmal Zweifel angesagt.




Anmelden zum Antworten