none
Aus der MSDN-Entwickler-Hotline: Wieso std::chrono::seconds nicht mit std::cout kompiliert RRS feed

  • Allgemeine Diskussion

  • Hallo zusammen,
    heute wurde uns bei der MSDN-Entwickler-Hotline unter anderem folgende Frage gestellt:

    Wieso kann ich std::chrono::duration [1] nicht mit std::cout verwenden?

    Unsere Antwort bzw. unser Lösungsvorschlag darauf war:

    Will man eine Variable mit std::cout ausgeben, muss der Streaming-Operator von std::ostream [2] für den entsprechenden Typen überladen sein. Für viele Standardtypen wie int, float, const char* und std::string sind solche Überladungen vorhanden. Viele Klassen besitzen eine soche Überladung aber nicht. Folgender Code

    std::cout << "Runtime: " << std::chrono::seconds(4) << std::endl;

    kompiliert einfach deshalb nicht, weil eben kein entsprechender Operator für std::chrono::seconds existiert. Man kann diesen aber einfach nachliefern. Dazu muss man einfach nur den Operator definieren:

    static std::ostream& operator <<(std::ostream& stream, const std::chrono::seconds& sec) { stream << sec.count() << "sec";
    return stream; }

    Oberer Code lässt sich nun kompilieren und ergibt folgende Ausgabe:

    Runtime: 4sec

    Für eine vollständigere Lösung könnte [3] interessant sein.

    [1] http://en.cppreference.com/w/cpp/chrono/duration
    [2] http://www.cplusplus.com/reference/ostream/ostream/operator%3C%3C/
    [3] http://home.roadrunner.com/~hinnant/bloomington/chrono_io

    Wir hoffen, vielen Besuchern der MSDN Foren durch das Posten dieses Problems und einer möglichen Lösung weiterhelfen zu können.

    Viele Grüße,

    Entwickler-Hotline für MSDN Online Deutschland

    Disclaimer:
    Bitte haben Sie Verständnis dafür, dass wir hier auf Rückfragen gar nicht oder nur sehr zeitverzögert antworten können.
    Bitte nutzen Sie für Rückfragen oder neue Fragen den telefonischen Weg über die MSDN-Entwickler-Hotline: http://www.msdn-online.de/Hotline

    Es gelten für die MSDN-Entwickler-Hotline und dieses Posting diese Nutzungsbedingungen , Hinweise zu Markenzeichen, Informationen zur Datensicherheitsowie die gesonderten Nutzungsbedingungen für die MSDN-Entwickler-Hotline.

    Samstag, 30. August 2014 23:47