ausgabe von zahlen



  • hi , wie formatiere ich denn am besten zahlen mit punkt und komma also z.b 1.000,00 ???? gibs da vielleicht ne insertfunktion für strings???



  • den tausender punkt kuss du dir selbst progen
    und sonst http://cplus.kompf.de/artikel/stream2.html



  • den tausender punkt kuss du dir selbst progen

    Nicht unbedingt. Mit einem entsprechenden facet, geht das fast wie von selbst:

    #include <locale>
    #include <iostream>
    #include <string>
    using namespace std;
    
    class mygrouping : public std::numpunct_byname<char>
    {
    public:
        mygrouping(const char* name) : std::numpunct_byname<char>(name)
        {}
    protected:
        std::string do_grouping() const
        {
            // Die Zahl an Index i des Strings gibt die Anzahl der Stellen
            // der i-ten Gruppe in der Zahl an. Dabei geht es von rechts nach links.
            // "\3"     bedeutet: Gruppen besten aus drei Ziffern.
            // "\2\3"   bedeutet: erste Gruppe drei Ziffern. Alle weiteren nur zwei
            return "\3";
        }   
        // Zeichen für die Gruppierung
        char do_thousands_sep() const
        {
            return '.';
        }
        // Zeichen für Dezimalpunkt.
        char do_decimal_point() const
        {
            return ',';
        }
    };
    int main()
    {
    #if defined (_MSC_VER) && _MSC_VER <= 1200
        std::locale loc = _ADDFAC(std::locale(""), new mygrouping(""));
    #else
        std::locale loc(std::locale(""), new mygrouping(""));
    #endif
    
        std::locale old = cout.imbue(loc);
        // Gibt 1.000.000.000 aus
        cout << 1000000000 << endl;
        // Gibt 3,14159 aus
        cout << 3.14159 << endl;
        cout.imbue(old);
    }
    

Anmelden zum Antworten