printf & cout



  • Moin,
    Ich wollte mal fragen worin den der wesentliche unterschied zwischen den printf und cout und scanf und cin liegt. Und welche vorteile mir cout und cin bringen
    Habs an der Uni in einem Grundkurs gelernt mit den printf und scanf funktionen.



  • printf und scanf sind für C. cout und cin für C++.



  • Die Steam-Varianten von C++ sind im Gegensatz zu den Funktionen von C typsicher. (Ich warte noch auf Pi :p )



  • okay dankeschön für die schnellen antworten.



  • Neben Typsicherheit hast du bei den C++-Streams vor allem Erweiterbarkeit für eigene Typen, Manipulatoren usw. (hierfür gibt es einen Artikel im Magazin) und die subjektiv schönere Schreibweise. 😃



  • Je nach Situation bekommst du aber mit den C-Streams teilweise deutlich kompakteren und schöneren Code hin.

    Man muss da eben genau sehen, was sich mehr lohnt. 😉



  • Als C++-Anfänger würde ich zunächst std::cout und std::cin verwenden, bei spezielleren Anforderungen kann man sich immer noch die C-Äquivalente anschauen.

    Zu diesem Thema gibts übrigens hunderte Threads in diesem Forum.



  • EOutOfResources schrieb:

    (Ich warte noch auf Pi :p )

    Kannst du lange warten, wenn ich kein Internet hab 😉

    Also hier, extra für dich - die typsichere Variante von printf.

    void print(const char* str)
    {
        std::cout << str;
    }
    
    template <typename Head, typename... Tail>
    void print(const char* str, Head&& head, Tail&&... tail)
    {
        while(*str != '%')
            std::cout << *str++;
    
        std::cout << head;
    
        print(++str, std::forward<Tail>(tail)...);
    }
    

    Lässt sich wie folgt verwenden:

    print("% % % %", 1, 2.0, '3', "4");
    

    Wer noch Formatierungsmöglichkeiten sowie die Möglichkeit, % im Formatstring zu verwenden haben möchte, kann sie sich dazudenken.


Anmelden zum Antworten