Better cout a.k.a coutn;

8

Jungs wäre es schwer zu schreiben Coutn, die im Grunde Newline-Symbol am Ende der Eingabe platzieren würde. Während ich mit der Konsole arbeite (das ist alles, was ich im Moment tun kann), finde ich es sehr mühsam, '\ n' jedes Mal zu schreiben, wenn die Zeile eine neue Zeile sein soll.
Oder ist es bereits implementiert?

    
There is nothing we can do 08.06.2010, 13:12
quelle

5 Antworten

11

Um die Mehrfacheinspritzungen in einer einzelnen Zeile zu umgehen, könnten Sie ein temporäres Objekt verwenden. Dieses temporäre Objekt würde das '\ n' in seinem Destruktor hinzufügen.

%Vor%

Am Ende frage ich mich, ob diese coutn tatsächlich besser ist?

    
Didier Trosset 08.06.2010, 13:26
quelle
4

Nun, das erste offensichtliche Ding wäre, eine Art Wrapper um ihn herum zu implementieren:

%Vor%

Verwendung ist wie folgt:

%Vor%

Einfach, Peasy.

    
Matthieu M. 08.06.2010 13:23
quelle
2

Grob:

%Vor%

(Ich bin mir nicht sicher, ob das perfekt funktioniert, aber es sollte dir helfen)

    
peterchen 08.06.2010 13:22
quelle
1

Die Art und Weise, wie Streams arbeiten, besteht darin, dass sie eine Sache hinzufügen und sich dann selbst zurückgeben.

also sind Sie sicher, dass Sie tun möchten, was Sie fragen?

Zum Beispiel:

s & lt; & lt; "a" & lt; & lt; "b";

Würde setzen:

  

ein
  b

Sicherlich können Sie einen Weg mit einer Art Wrapper finden, aber der zusätzliche Overhead und die verringerte Lesbarkeit des Codes sind meiner Meinung nach nicht wert. Die meisten Programmierer sind mit dem Standard C ++ vertraut. Die meisten Programmierer sind nicht vertraut mit Ihrem Coutn und wie es funktioniert.

    
Brian R. Bondy 08.06.2010 13:15
quelle
1

Komm ein Volk. Sie müssen zugeben, dass C ++ Zeilenumbrüche zu ausführlich sind. Schau dir C #, D, Java, Python, Ruby an, sollte ich weitermachen? Ich denke nicht, dass Sie ein coutn implementieren sollten. Ich denke, Sie wären besser dran, Beispiel D mit write , writeln , writef und writefln variadic Vorlagenfunktionen.

Wie auch immer, das geht ohne Makros und ohne das explizite Erstellen von Provisorien.

%Vor%

Die komplette Lösung muss mehr Überladungen für operator<< hinzufügen, um Stream-Manipulatoren ( std::hex etc) zu behandeln. Die Funktionen, die newliners zurückgeben, müssen immer inline sein, um RVO zu erlauben.

    
deft_code 08.06.2010 15:58
quelle

Tags und Links