mehrere user-defined facets installieren



  • hallo leute

    weiß jemand wie ich mehrere eigene facets in einem local installieren kann ?
    angenommen ich hab 2 facets: geo_position und date_time.

    ich weiß das ich beim erzeugen eines locales ein facet angeben kann, welches dann im local installiert wird. aber wie mach ich das mit mehreren facets ?

    Meep Meep



  • Du musst dann mit temporären Objekten hantieren. Man kann immer nur ein facet gleichzeitig hinzufügen.

    Und lass endlich das Plenken sein.



  • std::locale L(std::locale::classic(), 
                  new my_ctype);
    L = std::locale(L, new my_second_facet);
    

    Sowas müsste klappen.



  • Die gleiche Frage hatte ich eigentlich auch schonmal hier, ist nur irgendwo versunken, ohne dass ich den Thread gebookmarkt habe.

    Mich hat es gestört, dass man für jedes hinzugefügtes Locale eine neue Zeile schreiben muss.

    Da kam dann folgendes dabei raus, was ich nun teilen werde:

    namespace detail{
        template<typename Facet>
        void set_facets(std::locale& locale, Facet* facet){
            locale = std::locale(locale, facet);
        }
    
        template<typename Facet1, typename Facet2, typename... Args>
        void set_facets(std::locale& locale, Facet1* facet1, Facet2* facet2, Args... arguments){
            locale = std::locale(locale, facet1);
            set_facets(locale, facet2, std::forward<Args>(arguments)...);
        }
    }
    
    template<typename Facet1, typename Facet2, typename... Args>
    void set_facets(std::locale& locale, Facet1* facet1, Facet2* facet2, Args&&... arguments){
        detail::set_facets(locale, facet1, facet2, std::forward<Args>(arguments)...);
    }
    


  • Biolunar schrieb:

    Und lass endlich das Plenken sein.

    ?



  • danke rewrew


Anmelden zum Antworten